Java SequenceInputStream类

本文概述

  • Java SequenceInputStream类声明
  • SequenceInputStream类的构造方法
  • SequenceInputStream类的方法
  • Java SequenceInputStream示例
  • 从两个文件读取数据并写入另一个文件的示例
  • 使用枚举读取数据的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个字节的数据从输入流读取到字节数组中。
int available() 它用于返回可从输入流读取的最大字节数。
void close() 它用于关闭输入流。
Java SequenceInputStream示例【Java SequenceInputStream类】在此示例中, 我们将打印两个文件testin.txt和testout.txt的数据。
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

    推荐阅读