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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        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行不?(用其他集合具体要怎么做?)
还有就是上面的是不是合并流的常用写法?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

2 个回复

倒序浏览
Vector和ArrayList都是List集合中的一员。
Vector是在集合出现之前就存在的,线程同步。ArrayList后出现,线程不同步。现在基本上都用ArrayList
Enumeration枚举是Vector中的迭代器,用来读取Vector集合中的数据。
个人感觉,应该可以用ArrayList中的Iterator代替Enumeration。
但是SequenceInputStream它是1.0版本出来的,只支持Enumeration。那没办法,就这么用了。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
可以不用Vector而用别的集合,不过得用Collections的工具类转换一下,将合并的流转换成Enumeration<T>,因为Vector性能不行,所以一般实际开发中会用ArrayList,然后用Collections转成
Enumeration的集合,毕老师视频中有讲到如何转,建议你先把基础视频看完,看的时候配合这API一起看,效果会更好的

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

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