当前位置: 首页 > 教程 > Java IO流 >

Java SequenceInputStream

精华
小牛编辑
176浏览
2023-03-14

1 什么是Java SequenceInputStream

Java SequenceInputStream 类用于从多个流中读取数据 。它是按顺序读取数据的(也就是逐一读取)。

2 Java SequenceInputStream的语法

public class SequenceInputStream extends InputStream  

3 Java SequenceInputStream的构造方法

方法 描述
SequenceInputStream(InputStream s1, InputStream s2) 通过依次读取两个输入流的数据s1和s2创建新的输入流。
SequenceInputStream(Enumeration e) 通过读取类型为InputStream的枚举的数据来创建新的输入流。

4 Java SequenceInputStream的方法

方法 描述
int read() 用于从输入流中读取下一个数据字节。
int read(byte[] ary, int off, int len) 用于将len个字节的数据从输入流读取到字节数组中。
int available() 用于返回可从输入流读取的最大字节数。
void close() 用于关闭输入流。

5 Java SequenceInputStream的例子

在此示例中,我们将输出两个文件testin.txt和testout.txt的数据。

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 *  Java SequenceInputStream的例子
 */
import java.io.*;

class Demo {

    public static void main(String args[])throws Exception{
        FileInputStream input1=new FileInputStream("D:\\xnip\\testin.txt");
        FileInputStream input2=new FileInputStream("D:\\xnip\\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,它们包含以下信息:

testint.txt:

testout.txt:

以上程序输出结果为:

Welcome to Java IO Programming.It is the example of Java SequenceInputStream class.

6 两个文件写入一个文件

在此示例中,我们将两个文件testin1.txt和testin2.txt的数据写入另一个名为testout.txt的文件中。

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 *  Java SequenceInputStream的例子
 */
import java.io.*;

class Demo{

    public static void main(String args[])throws Exception{
        FileInputStream fin1=new FileInputStream("D:\\xnip\\testin1.txt");
        FileInputStream fin2=new FileInputStream("D:\\xnip\\testin2.txt");
        FileOutputStream fout=new FileOutputStream("D:\\xnip\\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..");
    }
}

testin1.txt:

testin2.txt:

以上程序执行后,控制台输出结果为:

Success..

testout.txt:

7 使用枚举读取4个文件数据

如果需要从两个以上的文件中读取数据,则需要使用Enumeration枚举。枚举对象可以通过调用Vector类的elements() 方法获得。让我们看一个简单的示例,其中我们从4个文件中读取数据:a.txt,b.txt,c.txt和d.txt。

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 *  Java SequenceInputStream的例子
 */
import java.io.*;
import java.util.*;
class Input2{
    public static void main(String args[])throws IOException{
        //为所有文件创建FileInputStream对象
        FileInputStream fin=new FileInputStream("D:\\xnip\\a.txt");
        FileInputStream fin2=new FileInputStream("D:\\xnip\\b.txt");
        FileInputStream fin3=new FileInputStream("D:\\xnip\\c.txt");
        FileInputStream fin4=new FileInputStream("D:\\xnip\\d.txt");
        //为所有流创建Vector对象
        Vector v=new Vector();
        v.add(fin);
        v.add(fin2);
        v.add(fin3);
        v.add(fin4);
        //通过调用elements方法创建枚举对象
        Enumeration e=v.elements();
        //在构造函数中传递枚举对象
        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:

Welcome

b.txt:

To

c.txt:

Yiidian

d.txt:

learn Java

以上程序输出结果为:

WelcomeToYiidianlearn Java