A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王冰 中级黑马   /  2012-7-12 07:15  /  1507 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王冰 于 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, 下载次数: 17)

毕老师运行后的结果

毕老师运行后的结果

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

我运行后出现的结果

我运行后出现的结果

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

3 个回复

倒序浏览
1.txt,2,txt,3,txt最后都是加了一个回车符的,如果不加就是你的结果。这个相当于是Windows的当前操作符在本行,如果连接文件的时候,肯定是从当前操作符往下接,那只能是你的结果。如果你在被合并的文件末尾加了回车,相当于从下一行开始,这样就能达到老师的效果了。
回复 使用道具 举报
啸傲江湖007 发表于 2012-7-12 08:24
1.txt,2,txt,3,txt最后都是加了一个回车符的,如果不加就是你的结果。这个相当于是Windows的当前操作符在本 ...

我加了后运行和毕老师的一样了,谢谢了。代码没有错找问题还真不怎么好找,我自己想了老半天都没有想出是什么原因
回复 使用道具 举报
这个问题要么在每个文件末尾加上回车。要么在每个流读取文件结束的时候加上回车符。
自定义结束标记,这样麻烦一点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马