黑马程序员技术交流社区

标题: 关于序列流(合并流) 用法!! [打印本页]

作者: 深知一生短暂    时间: 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