码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA之IO技术 合并文件--有bug哦

时间:2014-05-10 10:11:32      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:合并文件   合并流   io   

/*将三个文本文件的内容copy到一个文件中。
 * 基本思路:通过续写的方式。
 * 
 * JAVA之IO技术中提供了一个可串联的字节输入流对象。
 * 
 * 合并流对象
 * SequenceInputStream:
 * SequenceInputStream 表示其他输入流的逻辑串联。
 * 它从输入流的有序集合开始,并从第一个输入流开始读取,
 * 直到到达文件末尾,接着从第二个输入流读取,依次类推,
 * 直到到达包含的最后一个输入流的文件末尾为止。
 * 有两个构造函数:
 * SequenceInputStream(InputStream s1, InputStream s2) :针对于两个字节流对象的操作
 * SequenceInputStream(Enumeration<? extends InputStream> e) :
 * 针对于多个字节流对象的操作。
 */
package ioTest.io3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;

public class SequenceInputStreamDemo {

	public static void main(String[] args) throws IOException {
		//下面的构造函数需要传一个下面类型的参数,如何做------------------?
		/*Enumeration<InputStream> enum =new Enumeration<E>() {
		};
		*/
		Vector<InputStream> vector=new Vector<InputStream>();
		try {
			vector.add(new FileInputStream(new File("F:\\1.txt")));
			vector.add(new FileInputStream(new File("F:\\2.txt")));
			vector.add(new FileInputStream(new File("F:\\3.txt")));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		Enumeration<InputStream> en=vector.elements();
		//创建一个合并流对象-将源整合到流中
		SequenceInputStream sis=new SequenceInputStream(en);
		//目的地
		FileOutputStream outputStream=new FileOutputStream(new File("F:\\4.txt"));
		byte[] buf=new byte[1024];
		int len=0;
		while((len=sis.read(buf))>0)
		{
			outputStream.write(buf, 0, len);
		}	
		sis.close();
		outputStream.close();
	}
//--------为什么最后新生成的文件,文件的内容没有换行了?
}

JAVA之IO技术 合并文件--有bug哦,布布扣,bubuko.com

JAVA之IO技术 合并文件--有bug哦

标签:合并文件   合并流   io   

原文地址:http://blog.csdn.net/hymking/article/details/24985309

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!