黑马程序员技术交流社区
标题:
关于序列流(合并流) 用法!!
[打印本页]
作者:
深知一生短暂
时间:
2013-9-10 15:39
标题:
关于序列流(合并流) 用法!!
public static void main(String[] args)throws IOException {
Vector<FileInputStream> vc=new Vector<FileInputStream>();
vc.add(new FileInputStream("D:\\MyEclipse 8.5\\Workspaces\\IOStream\\1.txt"));
vc.add(new FileInputStream("D:\\MyEclipse 8.5\\Workspaces\\IOStream\\2.txt"));
vc.add(new FileInputStream("D:\\MyEclipse 8.5\\Workspaces\\IOStream\\3.txt"));
Enumeration<FileInputStream> en=vc.elements();
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("D:\\MyEclipse 8.5\\Workspaces\\IOStream\\4.txt");
byte[] by=new byte[1024];
int len=0;
while((len=sis.read(by))!=-1)
{
fos.write(by,0,len);
}
sis.close();
fos.close();
}
在合并流中,老师演示是用到了Vector容器,为什么要用到Enumeration这个类的引用?
还有那个是不是一定要用vector集合来对多个输入流进行存储?
还有能不能不用Vector 行不行?用List行不?(用其他集合具体要怎么做?)
还有就是上面的是不是合并流的常用写法?
作者:
胡智
时间:
2013-9-10 16:01
Vector和ArrayList都是List集合中的一员。
Vector是在集合出现之前就存在的,线程同步。ArrayList后出现,线程不同步。现在基本上都用ArrayList
Enumeration枚举是Vector中的迭代器,用来读取Vector集合中的数据。
个人感觉,应该可以用ArrayList中的Iterator代替Enumeration。
但是SequenceInputStream它是1.0版本出来的,只支持Enumeration。那没办法,就这么用了。
作者:
第一印象
时间:
2013-9-10 16:56
可以不用Vector而用别的集合,不过得用Collections的工具类转换一下,将合并的流转换成Enumeration<T>,因为Vector性能不行,所以一般实际开发中会用ArrayList,然后用Collections转成
Enumeration的集合,毕老师视频中有讲到如何转,建议你先把基础视频看完,看的时候配合这API一起看,效果会更好的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2