/*将三个文本文件的内容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
原文地址:http://blog.csdn.net/hymking/article/details/24985309