黑马程序员技术交流社区

标题: 关于合并流在运行时的一点问题 [打印本页]

作者: 王冰    时间: 2012-7-12 07:15
标题: 关于合并流在运行时的一点问题
本帖最后由 王冰 于 2012-7-12 08:47 编辑

        我看毕老师合并流的时候代码照着毕老师的写了遍,代码如下
import java.io.*;
import java.util.*;
class SequenceInputStreamDemo
{
     public static void main(String[] args) throws IOException
     {
           Vector<FileInputStream> v = new Vector<FileInputStream>();
      
           v.add(new FileInputStream("1.txt"));
           v.add(new FileInputStream("2.txt"));
           v.add(new FileInputStream("3.txt"));
  
           Enumeration<FileInputStream> en = v.elements();
           SequenceInputStream sis = new SequenceInputStream(en);
           FileOutputStream fos = new FileOutputStream("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();
      }

      public static void sop(Object obj)
     {
         System.out.println(obj);
     }
}
        程序可以正确运行,代码也没有错误,就是运行后合并的文件有点小区别,不知道是怎么回事,向各位请教下

20天-16-IO流(合并流)出现问题.JPG (27.6 KB, 下载次数: 49)

毕老师运行后的结果

毕老师运行后的结果

QQ截图20120712071257.jpg (19.06 KB, 下载次数: 62)

我运行后出现的结果

我运行后出现的结果

作者: 黑马振鹏    时间: 2012-7-12 08:24
1.txt,2,txt,3,txt最后都是加了一个回车符的,如果不加就是你的结果。这个相当于是Windows的当前操作符在本行,如果连接文件的时候,肯定是从当前操作符往下接,那只能是你的结果。如果你在被合并的文件末尾加了回车,相当于从下一行开始,这样就能达到老师的效果了。
作者: 王冰    时间: 2012-7-12 08:47
啸傲江湖007 发表于 2012-7-12 08:24
1.txt,2,txt,3,txt最后都是加了一个回车符的,如果不加就是你的结果。这个相当于是Windows的当前操作符在本 ...

我加了后运行和毕老师的一样了,谢谢了。代码没有错找问题还真不怎么好找,我自己想了老半天都没有想出是什么原因
作者: 陆强强    时间: 2012-7-12 08:50
这个问题要么在每个文件末尾加上回车。要么在每个流读取文件结束的时候加上回车符。
自定义结束标记,这样麻烦一点





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