黑马程序员技术交流社区

标题: 合并流的小问题 [打印本页]

作者: 一生一世    时间: 2012-6-26 11:18
标题: 合并流的小问题
本帖最后由 一生一世 于 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);
                }*/
            }
  }
}
}


作者: 一生一世    时间: 2012-6-26 11:19
这是我帮别人解决问题的时候遇到的问题,请高人指点一下
作者: 一生一世    时间: 2012-6-26 11:19
非常感谢
作者: 陆强强    时间: 2012-6-26 11:29
本帖最后由 陆强强 于 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);//这里你是作为空流传进去的参数,后来加入的对他没影响
作者: 一生一世    时间: 2012-6-26 12:27
恩,有道理,谢谢




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