`

SequenceInputStream 合并流与切割流

 
阅读更多
将多个流合并成一个流
SequenceInputStream(Enumeration<? extends InputStream> e) 
SequenceInputStream(InputStream s1, InputStream s2) 

例:将多个文件合并到一个流中,再写到一个文件中:
                Vector<FileInputStream> v = new Vector<FileInputStream>();
		
		v.add(new FileInputStream("c:\\1.txt"));
		v.add(new FileInputStream("c:\\2.txt"));
		v.add(new FileInputStream("c:\\3.txt"));

		Enumeration<FileInputStream> en = v.elements();

		SequenceInputStream sis = new SequenceInputStream(en);

		FileOutputStream fos = new FileOutputStream("c:\\4.txt");

		byte[] buf = new byte[1024];

		int len =0;
		while((len=sis.read(buf))!=-1)
		{
			fos.write(buf,0,len);
		}

		fos.close();
		sis.close();

合并文件
ArrayList<FileInputStream> aList = new ArrayList<FileInputStream>();// 为什么要用list,因为Vector已经过时了。
		
		for (int x = 1; x <= 4; x++)
		{
			aList.add(new FileInputStream("d:\\tmp\\" + x + ".part"));// 循环的将d:\\tmp\\下的part文件加入aList中
		}
		
		final Iterator<FileInputStream> it = aList.iterator();
		
		Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
		{
			
			@Override
			public FileInputStream nextElement()
			{
			
				// TODO Auto-generated method stub
				return it.next();
			}
			
			@Override
			public boolean hasMoreElements()
			{
			
				// TODO Auto-generated method stub
				return it.hasNext();
			}
		};
		
		SequenceInputStream sis = new SequenceInputStream(en);
		FileOutputStream fos = new FileOutputStream("d:\\tmp\\aa.exe");
		byte[] buf = new byte[1024 * 1024];
		int len = 0;
		while ((len = sis.read(buf)) != -1)
		{
			fos.write(buf, 0, len);
		}
		fos.close();
		sis.close();

切割文件
		FileInputStream fis = new FileInputStream("d:\\tmp\\plsqldev.exe");
		FileOutputStream fos = null;
		byte[] bytes = new byte[1024 * 1024 * 3];
		int len = 0;
		int count = 1;
		while ((len = fis.read(bytes)) != -1)
		{
			
			fos = new FileOutputStream("d:\\tmp\\" + (count++) + ".part");
			fos.write(bytes, 0, len);
		}
		
		fos.close();
		fis.close();
分享到:
评论

相关推荐

    IO流pdf宝典

    4. **序列流** - `SequenceInputStream`: 用于合并多个输入流。 5. **对象序列化流** - `ObjectInputStream` 和 `ObjectOutputStream`: 用于对象的序列化和反序列化。 6. **字节流** - `InputStream`: 输入流基类。...

    彻底明白java中的IO流

    - 输入流:例如,`ByteArrayInputStream`从内存缓冲区读取,`StringBufferInputStream`从字符串读取,`FileInputStream`用于读取文件,`PipedInputStream`用于线程间的通信,`SequenceInputStream`合并多个输入流。...

    java序列号流基础入门.docx

    Java序列化流(SequenceInputStream)是Java I/O流中的一个重要概念,它允许程序将多个输入流串联起来,形成一个逻辑上的连续输入流。这在处理多个数据源合并或连续读取时非常有用。在给定的示例代码中,我们可以...

    Java字节流与字符流的介绍.pdf

    Java 字节流与字符流的介绍 Java 中的流操作可以分为两种:字节流和字符流。字节流是指以 byte 为单位进行读写操作的流,而字符流是指以 char 为单位进行读写操作的流。 字节流的介绍 字节流的所有读操作都继承自...

    IO流 javaio java 流

    - SequenceInputStream:允许从多个输入流中连续读取数据。 7. NIO(New IO): - 自Java 1.4引入,NIO提供了非阻塞I/O操作,增加了Channel、Selector和Buffer等新概念,提高了效率和并发性。 8. 考虑到效率,...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    java_IO流的处理.ppt

    - SequenceInputStream:合并多个输入流,按顺序读取。 - LineNumberInputStream:记录并提供行号的输入流。 - DataInputStream:增加了读取基本数据类型(如int、float)的方法。 除了InputStream,还有...

    java输入输出流的两种写法

    - 可以通过 `PipedInputStream` 和 `PipedOutputStream` 实现线程间的通信,或者使用 `SequenceInputStream` 合并多个输入流。 8. 转换流: - `InputStreamReader` 和 `OutputStreamWriter` 可以将字节流转换为...

    java中的标准输入输出流

    - **SequenceInputStream**: 可以合并多个输入流。 **3.2 字符流** - **Reader**: 所有字符输入流的父类。 - **Writer**: 所有字符输出流的父类。 字符流与字节流的主要区别在于它们的基本单位不同。字符流以`...

    java序列号流基础入门.pdf

    Java序列号流(SequenceInputStream)是Java I/O流中的一个类,它允许我们将多个输入流连接在一起,就像一个单一的输入流一样进行操作。这在处理多个文件合并或者需要顺序读取不同源的数据时非常有用。 在示例代码...

    Java IO流文档

    - `SequenceInputStream`:将多个输入流组合成一个输入流。 - **OutputStream**:代表数据目的的输出流。 - `ByteArrayOutputStream`:将数据输出到内存中的字节数组。 - `FileOutputStream`:用于向磁盘文件写入...

    Java实现大文件的切割与合并操作示例

    以下是一个关于如何使用Java实现大文件切割与合并的详细说明。 首先,我们需要引入Java的`java.io`包,因为大部分文件操作都在这个包中。在这个示例中,我们使用`FileInputStream`和`FileOutputStream`进行读写操作...

    java 实现切割文件和合并文件的功能

    * SequenceInputStream:用于合并碎片流。 * FileOutputStream:用于写入文件。 * byte[]:用于缓冲区。 java 实现合并文件的代码示例如下: ```java public class MergeFileTest { public static void main...

    JavaIO流学习总结.pdf

    除了基本的输入输出流,还有一些特殊类型的流,如LineNumberInputStream提供行号功能,PushbackInputStream允许回退已读取的字节,而SequenceInputStream允许合并多个输入流。PrintStream是实用工具类,它可以格式化...

    java输入输出流文档

    - 特殊需求,包括转换类如 `InputStreamReader` 和 `OutputStreamWriter`,对象输入输出类 `ObjectInputStream` 和 `ObjectOutputStream`,进程间通信的管道流,以及合并输入的 `SequenceInputStream` 等。...

    多文件输入流类的使用

    在这个例子中,我们首先创建了两个`FileInputStream`对象,然后用`ArrayList`和`Collections.enumeration()`方法将其转换为枚举,最后通过`SequenceInputStream`将两个文件合并成一个流进行读取。 **2. 文件写入的...

    java中IO流例子

    - `PipedInputStream`和`PipedOutputStream`允许在不同的线程之间创建管道进行数据传输,而`SequenceInputStream`则可以将多个输入流串联起来作为一个单一的输入源。 7. **内存流**: - `ByteArrayInputStream`和...

    java之精髓IO流

    - **SequenceInputStream**:将多个输入流合并为一个输入流,可以顺序读取多个数据源的内容。 - **OutputStream** - **ByteArrayOutputStream**:将数据写入内存中的字节数组。适用于需要将数据暂时存储在内存中...

    javaIO(java中的流的介绍)

    - SequenceInputStream:组合多个输入流,按顺序读取它们的内容。 2. 输出流(Output Stream) - OutputStream:所有输出流的基类,用于写入原始字节。 - ByteArrayOutputStream:接收字节并存储到内存中,可将...

    IO流的总结

    - **多源合并**:使用`SequenceInputStream`。 - **对象序列化**:使用`ObjectInputStream`或`ObjectOutputStream`。 - **基本数据操作**:使用`DataInputStream`或`DataOutputStream`。 #### 八、实例分析 ...

Global site tag (gtag.js) - Google Analytics