Concatenate Streams

Revised: Mar./16th/2002

UNIX $B7O(B OS $B$G$O!"%F%-%9%H%U%!%$%k$NCfL#$r8+$?$j!"J#?t$N%F%-%9%H%U%!%$%k$r0l$D$K$D$J$2$F=PNO$9$k0Y$N%3%^%s%I$,MQ0U$5$l$F$$$^$9!#$3$N%3%^%s%I$O(B cat $B%3%^%s%I(B (conCATenate) $B$H8F$P$l$F$$$^$9!#(B Java $B$G$b!"J#?t$N%9%H%j!<%`$r$D$J$2$k%/%i%9$,MQ0U$5$l$F$$$^$9!#(B

SequenceInputStream $B$OJ#?t$NF~NO%9%H%j!<%`$+$i0l$D$NF~NO%9%H%j!<%`$r:n$j$^$9!#(B

$B7Q>53,AX!'(B

java.lang.Object
  |
  +--java.io.InputStream
        |
        +--java.io.SequenceInputStream

$B%3%s%9%H%i%/%?!'(B

SequenceInputStream(Enumeration e)
SequenceInputStream(InputStream s1, InputStream s2)

$BFs$D$N(B InputStream $B7?$N%*%V%8%'%/%H$rO"7k$9$k$N$,4pK\E*$J;H$$J}$G$9!#;0$D0J>e$N%9%H%j!<%`$NO"7k$K$O(B java.util.Enumeration $B!JNs5s!K%$%s%?%U%'!<%9$r;H$$$^$9!#$3$N%$%s%?%U%'!<%9$rH$7!"

java.util.Enumeration $B$N%a%=%C%I(B
booleanhasMoreElements() $BNs5s$K$5$i$KMWAG$,$"$k$+$I$&$+$rH=Dj$7$^$9!#(B
ObjectnextElement() $BNs5s$K(B 1 $B$D0J>e$NMWAG$,;D$C$F$$$k>l9g$O!"

$B%5%s%W%k(B

$B$3$3$G$O(B UNIX $B7O(B OS $B$N(B cat $B%3%^%s%I$N:F8=$r$7$F$_$^$7$g$&!#%3%^%s%I%i%$%s0z?t$GM?$($i$l$?%Q%9$NNs5s$rO"7k$7$FI8=`=PNO$K=PNO$7$^$9!#(B

  1. $B%U%!%$%k$NNs5s$r07$&(B Enumeration $B$N
  2. $B$3$N%*%V%8%'%/%H$r%3%s%9%H%i%/%?0z?t$K$7$F%$%s%9%?%s%92=$7$F=PNO$9$k!#(B

Enumeration $B$N%5%s%W%k(B

$B%3%s%9%H%i%/%?$G$O!"J8;zNs$NG[Ns$GInputStream $B%*%V%8%'%/%H$NNs5s$r$D$/$j!"%$%s%?%U%'!<%9$N%a%=%C%I$r

$B$3$N%/%i%9$,K~$?$9$Y$->r7o$O

Enumeration $B%$%s%?%U%'!<%9$N
SequenceInputStream $B%/%i%9$NMW5a(B

$B!VnextElement() $B$NLa$jCM$N$3$H$G$9$,!"%$%s%?%U%'!<%9$G$O!"A4$F$N%/%i%9$N%9!<%Q!<%/%i%9$G$"$k(B Object $B7?$,;XDj$5$l$F$$$k$N$G!"G$0U$N%/%i%97?$,5v$5$l$^$9!#$^$?!"(B SequenceInputStream $B%/%i%9$NMW5a$G$"$k(B InputStream $B%/%i%9$OA4$F$N%P%$%H%9%H%j!<%`%/%i%9$N%9!<%Q!<%/%i%9$J$N$G!"G$0U$N%P%$%H%9%H%j!<%`$,5v$5$l$^$9!#$3$N%5%s%W%k$G$O%U%!%$%k$r07$&$N$G!"FileInputStream $B$G$9!#(B

$B$^$H$a$k$H!"BeF~$N<+F07?JQ49$O

[InputStream] = [FileInputStream]
[Object] = [InputStream]

FilesList.java:

import java.io.*;
import java.util.*;

class FilesList implements Enumeration {
	private String[] files;
	private int counter = 0;

	FilesList(String[] args) {
		files = args;
	}

	// $BMWAG$,;D$C$F$$$l$P(B true
	public boolean hasMoreElements() {
		if (counter < files.length) {
			return true;
		} else {
			return false;
		}
	}

	// $BnextElement() {
		InputStream in = null;

		// $BH$rJV$9(B
		return in;
	}
}

$B%3%s%H%m!<%k%/%i%9(B

$B$D$.$O$3$N%/%i%9(B FilesList $B$rMxMQ$9$k(B main() $B%a%=%C%I$r:n$C$F$_$^$9!#0z?t$KJ#?t$NJ8;zNs$rH$r>e$N%/%i%9$N%3%s%9%H%i%/%?0z?t$KM?$($^$9!#(B

Cat.java:

import java.io.*;

class Cat {
	public static void main(String[] args) throws IOException {
		FilesList files = new FilesList(args);

		SequenceInputStream in = new SequenceInputStream(files);

		BufferedReader bin
		    = new BufferedReader(new InputStreamReader(in));
		String str="";

		while ((str = bin.readLine()) != null) {
			System.out.println(str);
		}

		bin.close();
		in.close();
	}
}

$B$^$:!">e$G:n$C$?(B FilesList $B%/%i%9$r%$%s%9%?%s%92=$7!"$3$l$r0z?t$H$7$F(B SequenceInputStream $B$r:n$C$F$$$^$9!#(B

$B$5$i$K$3$l$r(B BufferedReader $B%/%i%9$G%i%C%W$7$F$$$^$9!#(B SequenceInputStream $B7?$N%9%H%j!<%`$O%P%$%H%9%H%j!<%`$J$N$G!"J8;z%9%H%j!<%`$KJQ49$9$k0Y$K!"(B InputStreamReader $B$r4V$K64$s$G$$$^$9!#(B

$B$"$H$O(B readLine() $B$G9T$rFI$_9~$s$G=PNO$7$F$$$^$9!#(B

$B

C:\IO>javac FilesList.java

C:\IO>javac Cat.java

C:\IO>java Cat test.txt test2.txt test3.txt
Hello World.

Bye World.
$B$3$s$K$A$O(B

$B$5$h$&$J$i(B
Buongiorno.

Arrivederci.

C:\IO>

test.txt

Hello World.

Bye World.

test2.txt

$B$3$s$K$A$O(B

$B$5$h$&$J$i(B

test3.txt

Buongiorno.

Arrivederci.



Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送