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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁岩 中级黑马   /  2012-9-26 07:35  /  4236 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用切割文件,把一个图片切成了很多part,在合并这些part的时候
看了一眼毕老师的代码
  1. package days16;
  2. import java.io.*;
  3. import java.util.*;
  4. public class Spilt2
  5. {
  6. public static void main(String[]args) throws FileNotFoundException, IOException
  7. {
  8. ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();

  9. for(int x=1; x<=49333; x++)
  10. {
  11. al.add(new FileInputStream("D:\\split\\"+x+".part"));
  12. }

  13. final Iterator<FileInputStream> it = al.iterator();

  14. Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
  15. {
  16. public boolean hasMoreElements()
  17. {
  18. return it.hasNext();
  19. }
  20. public FileInputStream nextElement()
  21. {
  22. return it.next();
  23. }
  24. };

  25. SequenceInputStream sis = new SequenceInputStream(en);


  26. FileOutputStream fos = new FileOutputStream("d:\\修.gif");

  27. byte[] buf = new byte[1024];

  28. int len = 0;

  29. while((len=sis.read(buf))!=-1)
  30. {
  31. fos.write(buf,0,len);
  32. }

  33. fos.close();
  34. sis.close();
  35. }
  36. }
复制代码
其中这段没看懂是为什么,希望有人帮我解释一下。。。
  1. final Iterator<FileInputStream> it = al.iterator();

  2. Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
  3. {
  4. public boolean hasMoreElements()
  5. {
  6. return it.hasNext();
  7. }
  8. public FileInputStream nextElement()
  9. {
  10. return it.next();
  11. }
  12. };
复制代码
而且我为啥将打碎的图片的part,合并成一个新的图片,新的图片为什么已经破坏了。图片格式是从[.gif=>.gif]


2 个回复

倒序浏览
这段代码简单啊,是为了SequenceInputStream的实例化传入一个.Enumeration类型的参数。
而编写的,为了得到Enumeration对象,只要复写.Enumeration的方法hasMoreElements(),
FileInputStream nextElement(),这里使用.ArrayList的迭代器来返回两方法需要返回的值,这样就能发挥SequenceInputStream的作用了
回复 使用道具 举报
这里其实就是 collections工具类中获取枚举方法enumeration()的原理。
熟悉后,完全可以直接
Enumeration<FileInputStream>en=Collections.enumeration(al);一步到位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马