转
http://imain.iteye.com/blog/263741
SequenceInputStream类允许连接多个InputStream流。SequenceInputStream的构造不同于任何其他的InputStream。SequenceInputStream构造函数要么使用一对InputStream,要么用InputStream的一个Enumeration,显示如下:
SequenceInputStream(InputStream first, InputStream second)
SequenceInputStream(Enumeration streamEnum)
操作上来说,该类满足读取完第一个InputStream后转去读取第二个流的读取要求。使用Enumeration的情况下,它将继续读取所有InputStream流直到最后一个被读完。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Vector;
public class InputStreamEnumerator implements Enumeration<InputStream> {
private Enumeration<String> files;
public InputStreamEnumerator(Vector<String> files){
this.files = files.elements();
}
public boolean hasMoreElements() {
return files.hasMoreElements();
}
public InputStream nextElement() {
try {
return new FileInputStream(System.getProperty("user.dir")+"/"+files.nextElement().toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Vector;
public class SequenceInputStreamDemo {
public static void main(String[] args) throws Exception {
int c;
Vector<String> files = new Vector<String>();
files.addElement("file1.txt");
files.addElement("file2.txt");
InputStreamEnumerator e = new InputStreamEnumerator(files);
InputStream input = new SequenceInputStream(e);
while((c=input.read())!=-1){
System.out.print((char)c);
}
input.close();
}
}
分享到:
相关推荐
`SequenceInputStream`是Java提供的一个特殊流,它可以顺序地读取多个输入流,就像它们是一个流一样。 **1. SequenceInputStream的使用** `SequenceInputStream`的构造方法接收一个`Enumeration`类型的参数,这个...
### JAVA IO流学习知识点 #### 一、Java IO流概念及背景 - **引入原因**:在Java中,为了能够方便地与外部设备(如硬盘、网络等)进行数据交互,设计了一套标准的输入输出处理机制,即IO流。这使得程序能够更加...
Java序列化流(SequenceInputStream)是Java I/O流中的一个重要概念,它允许程序将多个输入流串联起来,形成一个逻辑上的连续输入流。这在处理多个数据源合并或连续读取时非常有用。在给定的示例代码中,我们可以...
总结起来,Java的SequenceInputStream提供了一种方便的方式来顺序读取多个输入流,而不需要手动管理多个流的读取顺序。这在处理多个数据源或合并文件时非常实用,简化了代码并提高了可读性。同时,通过结合使用...
- SequenceInputStream:组合多个输入流,按顺序读取它们的内容。 2. 输出流(Output Stream) - OutputStream:所有输出流的基类,用于写入原始字节。 - ByteArrayOutputStream:接收字节并存储到内存中,可将...
- **SequenceInputStream**:将多个输入流合并为一个输入流,可以顺序读取多个数据源的内容。 - **OutputStream** - **ByteArrayOutputStream**:将数据写入内存中的字节数组。适用于需要将数据暂时存储在内存中...
此外,ObjectInputStream可以反序列化由ObjectOutputStream序列化的对象,SequenceInputStream则可以将多个InputStream连接起来,按顺序读取。 Reader和Writer体系与InputStream和OutputStream类似,只是它们处理的...
- SequenceInputStream:组合多个输入流,按顺序读取多个输入流的数据。 - OutputStream:字节输出流,作为所有字节输出流的超类,用于写入原始字节数据。例如: - ByteArrayOutputStream:字节数组输出流,用于...
- **`SequenceInputStream`**:合并多个输入流为一个单一的顺序输入流。 ##### 2. 字节流操作 - **读取操作**:通过 `read()` 方法从流中读取字节。 - **关闭流**:使用 `close()` 方法关闭流,释放系统资源。 ##...
流是有方向性的,不能往一个输入流中写数据,也不能从一个输出流中读数据。 字节流和字符流: InputStream和OutputStream是Java中两个基本的流类,它们可以读取或写入字节流或字符流。FilterInputStream和...
以及`SequenceInputStream`,可以合并多个输入流。 - 输出流:包含`ByteArrayOutputStream`,将数据写入内存缓冲区;`FileOutputStream`,写入文件;`PipedOutputStream`,与PipedInputStream配合使用;以及`...
- SequenceInputStream:合并多个输入流,按顺序读取。 - LineNumberInputStream:记录并提供行号的输入流。 - DataInputStream:增加了读取基本数据类型(如int、float)的方法。 除了InputStream,还有...
- `SequenceInputStream`:可以将多个输入流合并成一个输入流。 - **输出流**:向目标端写入字节数据。主要类包括: - `ByteArrayOutputStream`:将数据写入内存数组。 - `FileOutputStream`:将数据写入文件。 ...
SequenceInputStream可以把多个输入流当作一个连续的输入流来读取,使程序可以顺序地读取多个文件或数据源。 ObjectInputStream和ObjectOutputStream是用于对象序列化的流。它们可以读写Java对象的状态,实现了对象...
- **SequenceInputStream** 可以将多个输入流合并为一个,使得数据可以从多个源头顺序读取。 - **过滤流的其他类型**,如`BufferedInputStream`和`BufferedOutputStream`,可以提供缓冲功能以提高性能;`...
- SequenceInputStream可以将多个输入流合并为一个连续的流,类似于将多个文件的内容顺序连接。 在Java IO中,还有一组用于对象序列化的流类,包括ObjectInputStream和ObjectOutputStream,它们支持将Java对象序列...
- 输入流:ByteArrayInputStream、StringBufferInputStream、FileInputStream、PipedInputStream和SequenceInputStream。 - 输出流:ByteArrayOutputStream、FileOutputStream、PipedOutputStream和...
它按顺序读取指定的输入流,非常适合实现文件合并功能。 4. **StringReader 和 StringWriter**: - 这两个类分别实现了Reader和Writer接口,它们可以直接与字符串交互,方便在内存中进行文本操作。 5. **打印流**...
- `SequenceInputStream`:顺序连接多个输入流。 - `FilterInputStream`:提供基础的过滤器流类。 ##### 输出流 面向字节的输出流类主要继承自`OutputStream`类。关键方法包括: - `write(int byteData)`:写入...