黑马程序员技术交流社区
标题:
使用SequenceInputStream将切割后文件合并程序的疑问
[打印本页]
作者:
刘元明
时间:
2012-3-22 15:38
标题:
使用SequenceInputStream将切割后文件合并程序的疑问
程序如下:
public static void merge()
{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int x=1;x<=3;x++)
{
al.add(new FileInputStream("c:\\splits\\"+x+".part"));
}
/*
final Iterator <FileInputStream> it=al.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream> ()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
}
SequenceInputStream sis=new SequenceInputStream (en);
*/
FileOutputStream fos =new FileOutputStream("c:\\splits\\1.bmp");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
请问注释的部分啥思路?本来写Vector集合可以直接使用Enumeration,但考虑到低效就不用vector集合,但这样做高效体现在哪呢?
作者:
陈汉帆
时间:
2012-3-22 19:04
本帖最后由 陈汉帆 于 2012-3-22 20:09 编辑
Enumeration<FileInputStream> en=new Enumeration<FileInputStream> ()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
}
这部分表示匿名内部类,对Enumeration接口重写它的hasMoreElements()和nextElement()方法以实现匿名子类实例化,
Vector是同步的,ArrayList是不同步的,所以如果是单线程时Vector会影响性能;另一方面,当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样ArrayList就有利于节约空间了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2