Java SequenceInputStream

原文:https://www.studytonight.com/java-file-io/java-sequenceinputstream-class

在本教程中,我们将学习 Java 中的 SequenceInputStream 类。此类用于从多个流中读取数据。顾名思义,它按顺序读取数据,意思是一个接一个。

Java 序列输出流类声明

这是 SequenceInputStream 类的声明,我们可以看到 InputStream 类是在这个类中继承的。

public class SequenceInputStream extends InputStream

SequenceInputStream 类的构造器

构造器 描述
SequenceInputStream(InputStream s1, InputStream s2) 它通过按顺序读取两个输入流的数据来创建新的输入流,首先是 s1,然后是 s2。
SequenceInputStream(Enumeration e) 它通过读取类型为 input stream 的枚举的数据来创建新的输入流。

序列输出流类的方法

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

Java 序列输出流示例

在下面给出的例子中,我们使用SequenceInputStream 类从两个文件中读取数据。对于这两个文件,我们为两个文件创建了 FileInputStream 的两个对象,并将它们传递给SequenceInputStream 类的构造器。现在使用read() 方法,我们逐个读取两个文件的数据。我们可以看到这个程序的输出是两个文件的内容。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class StudyTonight 
{
    public static void main(String[] args) throws IOException 
    {  
        FileInputStream fileInputStream1=new FileInputStream("E:\\studytonight\\myfile1.txt");    
        FileInputStream fileInputStream2=new FileInputStream("E:\\studytonight\\myfile2.txt");    
        SequenceInputStream inst=new SequenceInputStream(fileInputStream1, fileInputStream2);    
        int c;    
        while((c=inst.read())!=-1)
        {    
            System.out.print((char)c);    
        }    
        inst.close();    
        fileInputStream1.close();    
        fileInputStream2.close();  
    }  
}

1234567890ABCDEFGHIJKL

我的文件 1.txt

1234567890

我的文件 2.txt

ABCDEFGHIJKL

从两个文件中读取数据并写入另一个文件的示例

在给出的例子中,我们将从两个文件中读取数据,并将相同的数据存储到output.txt文件中。为了读取数据,我们需要一个用于相应文件的FileInputStream 类的对象。为了从该文件中顺序读取,我们将使用SequenceInputStream 类并使用read()方法从这些文件中读取内容,并使用FileOutputStram 类的write() 方法将其写入output.txt文件。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class StudyTonight 
{
    public static void main(String[] args) throws IOException 
    {  
        FileInputStream fileInputStream1=new FileInputStream("E:\\studytonight\\myfile1.txt");    
        FileInputStream fileInputStream2=new FileInputStream("E:\\studytonight\\myfile2.txt");    
        FileOutputStream fout=new FileOutputStream("E:\\studytonight\\output.txt");      
        SequenceInputStream sis=new SequenceInputStream(fileInputStream1, fileInputStream2);    
        int i;    
        while((i=sis.read())!=-1)    
        {    
            fout.write(i);        
        }    
        sis.close();    
        fout.close();      
        fileInputStream1.close();      
        fileInputStream2.close();       
        System.out.println("Data is written to the file successfully...");  
    }    
}

数据成功写入文件...

我的文件 1.txt

1234567890

我的文件 2.txt

ABCDEFGHIJKL

输出. txt

1234567890ABCDEFGHIJKL

结论

在本教程中,我们学习了如何使用 SequenceInputStream 类从文件中顺序读取数据。此类用于从多个流中读取数据。顾名思义,它按顺序读取数据,意思是一个接一个。