本文概述
- Java SequenceInputStream类声明
- SequenceInputStream类的构造方法
- SequenceInputStream类的方法
- Java SequenceInputStream示例
- 从两个文件读取数据并写入另一个文件的示例
- 使用枚举读取数据的SequenceInputStream示例
Java SequenceInputStream类声明让我们看一下Java.io.SequenceInputStream类的声明:
public class SequenceInputStream extends InputStream
SequenceInputStream类的构造方法
建设者 | 描述 |
---|---|
SequenceInputStream(InputStream s1, InputStream s2) | 通过依次读取两个输入流的数据s1和s2创建新的输入流。 |
SequenceInputStream(Enumeration e) | 通过读取类型为InputStream的枚举的数据来创建新的输入流。 |
方法 | 描述 |
---|---|
int read() | 它用于从输入流中读取下一个数据字节。 |
int read(byte[] ary, int off, int len) | 它用于将len个字节的数据从输入流读取到字节数组中。 |
int available() | 它用于返回可从输入流读取的最大字节数。 |
void close() | 它用于关闭输入流。 |
package com.srcmini;
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.srcmini;
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..");
}
}
输出:
Succeess...
testout.txt:
Welcome to Java IO Programming. It is the example of Java SequenceInputStream class.
使用枚举读取数据的SequenceInputStream示例如果需要从两个以上的文件中读取数据, 则需要使用Enumeration。枚举对象可以通过调用Vector类的elements()方法获得。让我们看一个简单的示例, 其中我们从4个文件中读取数据:a.txt, b.txt, c.txt和d.txt。
package com.srcmini;
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:
Welcome
b.txt:
to
c.txt:
java
d.txt:
programming
输出:
Welcometojavaprogramming
推荐阅读
- Java FileOutputStream类
- Java FileInputStream类
- Java DataOutputStream类
- Java ByteArrayOutputStream类
- Java DataInputStream类
- Java ByteArrayInputStream类
- Java BufferedOutputStream类
- Android PdfViewer
- Openstack Cinder使用NetApp NFS作为后端存储