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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一生一世 中级黑马   /  2012-6-26 11:18  /  1470 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一生一世 于 2012-6-26 12:28 编辑

/*
合并流
SequenceInputStream
视频在day20-16合并流
*/
import java.io.*;
import java.util.*;
class SequenceStreamDemo1{

public static void main(String args[])throws Exception{
  SequenceStreamDemo1 ssd = new SequenceStreamDemo1();
  ssd.mergeFile();
}
public void mergeFile() throws Exception{
  String[] path = new String[]{"E:\\1.txt","E:\\2.txt","E:\\3.txt"};
  Vector<FileInputStream> v = new Vector<FileInputStream>();
  Enumeration<FileInputStream> en = v.elements();
  SequenceInputStream sis = new SequenceInputStream(en);
  FileOutputStream fos = new FileOutputStream("E:\\4.txt");
  
  merge(path,v,sis,fos);
  
  sis.close();
  fos.close();
}
private void merge(String[] path, Vector<FileInputStream> v,
   SequenceInputStream sis, FileOutputStream fos) throws Exception{
  
  for(int i=0; i<path.length; i++){
   v.add(new FileInputStream(path));
   int len;
            byte[] b = new byte[1024];
   while ((len=sis.read(b))!=-1){//为什么这句话一直得不到执行呢??
                fos.write(b,0,len);
                /*if(!(b[len-2]==13 && b[len-1]==10)){
                 fos.write(13);
                 fos.write(10);
                }*/
            }
  }
}
}

4 个回复

倒序浏览
这是我帮别人解决问题的时候遇到的问题,请高人指点一下
回复 使用道具 举报
非常感谢
回复 使用道具 举报
本帖最后由 陆强强 于 2012-6-26 11:39 编辑

Vector<FileInputStream> v = new Vector<FileInputStream>();
          Enumeration<FileInputStream> en = v.elements();
你集合加载的是空流,应该这样
Vector<FileInputStream> v = new Vector<FileInputStream>();
               for(int i=0; i<path.length; i++){
    v.add(new FileInputStream(path));
   }
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);//这里你是作为空流传进去的参数,后来加入的对他没影响

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
恩,有道理,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马