黑马程序员技术交流社区

标题: io多文件合并成一个文件的疑问 [打印本页]

作者: 凝聚    时间: 2013-11-5 09:27
标题: io多文件合并成一个文件的疑问
本帖最后由 凝聚 于 2013-11-5 20:15 编辑

Vector<FileInputStream>v=new Vector<FileInputStream>();
                v.add(new FileInputStream("D://file//1.txt"));
                v.add(new FileInputStream("D://file//2.txt"));
                v.add(new FileInputStream("D://file//3.txt"));
                Enumeration<FileInputStream>en=v.elements();
                SequenceInputStream sis=new         SequenceInputStream(en);
                FileOutputStream fos=new FileOutputStream("D://file//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();
这段代码是把三个文件的数据合并到一个文件中,但在“4.txt"中三个文件在其中并没有换行啊,输出的形式是:
1111111111111111

1111111111111111

1111111111111111222222222222222

222

222222222222222233333333333

33333333333333

333333333

1,2,3分别是是第1,2,3个文件的数据,问怎样才能让他们换行啊




作者: ~﹏~    时间: 2013-11-5 13:34
我想到一个办法:在合并前将每个文件读出来然后追加一个“\n”.getBytes();嘿嘿
作者: 杨增坤    时间: 2013-11-5 14:52
合并流这样就是为了方便读取,把流都链接起来,合并到一起。
要向在读取每个文件后面有换行的话,那么读取的文件最后都有换行,都回车一下。




或者,把合并流封装到BufferedReader'中,使用转换流。
BufferedReader br=new BufferedReader(new InputStreamReader(合并流对象));


然后一行一行的读取,也如的时候用BufferedWriter,然后写一行,换行一次,
这样应该就可以在每个文件之间换行。


希望对你有帮助!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2