黑马程序员技术交流社区
标题:
切割文件与合并流
[打印本页]
作者:
丁岩
时间:
2012-9-26 07:35
标题:
切割文件与合并流
我用切割文件,把一个图片切成了很多part,在合并这些part的时候
看了一眼毕老师的代码
package days16;
import java.io.*;
import java.util.*;
public class Spilt2
{
public static void main(String[]args) throws FileNotFoundException, IOException
{
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int x=1; x<=49333; x++)
{
al.add(new FileInputStream("D:\\split\\"+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("d:\\修.gif");
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
复制代码
其中这段没看懂是为什么,希望有人帮我解释一下。。。
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
复制代码
而且我为啥将打碎的图片的part,合并成一个新的图片,新的图片为什么已经破坏了。图片格式是从[.gif=>.gif]
作者:
柳彬
时间:
2012-9-26 08:19
这段代码简单啊,是为了SequenceInputStream的实例化传入一个.Enumeration类型的参数。
而编写的,为了得到Enumeration对象,只要复写.Enumeration的方法hasMoreElements(),
FileInputStream nextElement(),这里使用.ArrayList的迭代器来返回两方法需要返回的值,这样就能发挥SequenceInputStream的作用了
作者:
尤洋
时间:
2012-9-26 08:56
这里其实就是 collections工具类中获取枚举方法enumeration()的原理。
熟悉后,完全可以直接
Enumeration<FileInputStream>en=Collections.enumeration(al);一步到位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2