Java SequenceInputStream
Java SequenceInputStream是用于从多个流中读取数据。它顺序地(一个接一个地)读取数据。
Java SequenceInputStream类声明
让我们看看Java.io.SequenceInputStream类的声明:
public class SequenceInputStream extends InputStream
SequenceInputStream类的构造方法
构造函数 |
说明 |
SequenceInputStream(InputStream s1,InputStream s2) |
通过依次读取两个输入流的数据(先是s1然后是s2)来创建新的输入流。 |
SequenceInputStream(Enumeration e) |
通过读取类型为InputStream的枚举的数据来创建新的输入流。 |
SequenceInputStream类的方法
方法 |
说明 |
int read() |
它用于从输入流中读取下一个数据字节。 |
int read(byte [] ary,int off,int len) |
它用于从输入流中读取len个字节的数据到array个字节中。 |
int available() |
它用于返回可从输入流读取的最大字节数。 |
void close() |
它用于关闭输入流。 |
Java SequenceInputStream示例
在此示例中,我们将打印两个文件testin.txt和testout.txt的数据。
package com.lidihuo;
import java.io.*;
class InputStreamExample {
public static void main(String args[])throws Exception{
FileInputStream input1=new FileInputStream("D:\\testin.txt");
FileInputStream input2=new FileInputStream("D:\\testout.txt");
SequenceInputStream inst=new SequenceInputStream(input1, input2);
int j;
while((j=inst.read())!=-1){
System.out.print((char)j);
}
inst.close();
input1.close();
input2.close();
}
}
在这里,我们假设您有两个文件: testin.txt和testout.txt,它们具有以下信息:
testin.txt:
Welcome to Java IO Programming.
testout.txt:
It is the example of Java SequenceInputStream class.
执行程序后,您将获得以下输出:
输出:
Welcome to Java IO Programming. It is the example of Java SequenceInputStream class.
从两个文件读取数据并将其写入另一个文件的示例
在此示例中,我们正在写入两个文件的数据
testin1.txt 和
testin2.txt 插入另一个名为
testout.txt的文件。
package com.lidihuo;
import java.io.*;
class Input1{
public static void main(String args[])throws Exception{
FileInputStream fin1=new FileInputStream("D:\\testin1.txt");
FileInputStream fin2=new FileInputStream("D:\\testin2.txt");
FileOutputStream fout=new FileOutputStream("D:\\testout.txt");
SequenceInputStream sis=new SequenceInputStream(fin1,fin2);
int i;
while((i=sis.read())!=-1) {
fout.write(i);
}
sis.close();
fout.close();
fin1.close();
fin2.close();
System.out.println("Success..");
}
}
输出:
testout.txt:
Welcome to Java IO Programming. It is the example of Java SequenceInputStream class.
使用枚举读取数据的SequenceInputStream示例
如果需要从两个以上的文件中读取数据,则需要使用枚举。枚举对象可以通过调用Vector类的elements()方法获得。让我们看一个简单的示例,其中我们从4个文件中读取数据: a.txt,b.txt,c.txt和d.txt。
package com.lidihuo;
import java.io.*;
import java.util.*;
class Input2{
public static void main(String args[])throws IOException{
//creating the FileInputStream objects for all the files FileInputStream fin=new FileInputStream("D:\\a.txt");
FileInputStream fin2=new FileInputStream("D:\\b.txt");
FileInputStream fin3=new FileInputStream("D:\\c.txt");
FileInputStream fin4=new FileInputStream("D:\\d.txt");
//creating Vector object to all the stream Vector v=new Vector();
v.add(fin);
v.add(fin2);
v.add(fin3);
v.add(fin4);
//creating enumeration object by calling the elements method Enumeration e=v.elements();
//passing the enumeration object in the constructor SequenceInputStream bin=new SequenceInputStream(e);
int i=0;
while((i=bin.read())!=-1){
System.out.print((char)i);
}
bin.close();
fin.close();
fin2.close();
}
}
a.txt,b.txt,c.txt和d.txt具有以下信息:
a.txt:
b.txt:
c.txt:
d.txt:
输出: