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 $B$3$3$G$O(B UNIX $B7O(B OS $B$N(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
$B!V $B$^$H$a$k$H!"BeF~$N<+F07?JQ49$O
$B$D$.$O$3$N%/%i%9(B $B$^$:!">e$G:n$C$?(B $B$5$i$K$3$l$r(B $B$"$H$O(B $BInputStream
$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$r
java.util.Enumeration
$B$N%a%=%C%I(B
boolean
hasMoreElements()
$BNs5s$K$5$i$KMWAG$,$"$k$+$I$&$+$rH=Dj$7$^$9!#(B
Object
nextElement()
$BNs5s$K(B 1 $B$D0J>e$NMWAG$,;D$C$F$$$k>l9g$O!"
$B%5%s%W%k(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
Enumeration
$B$NEnumeration
$B$N%5%s%W%k(B
Enumeration
$B%$%s%?%U%'!<%9$N
public Object nextElement()
NoSuchElementException
public boolean hasMoreElements()
true
SequenceInputStream
$B%/%i%9$NMW5a(B
Enumeration
$B7?(BEnumeration
$B$O!VObject
$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!"
[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
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!#(BCat.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();
}
}
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!#(BBufferedReader
$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!#(BreadLine()
$B$G9T$rFI$_9~$s$G=PNO$7$F$$$^$9!#(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] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送