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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第一个合并是用vector集合中的Enumeration。
第二个是Arraylist实现内部类来提供Enumeration。
  1. public static void hebing()throws IOException
  2.         {
  3.                 Vector<FileInputStream>v=new Vector<FileInputStream>();
  4.                 for (int x=0;x<=3 ;x++ )
  5.                 {
  6.                         v.add(new FileInputStream("e:\\tupian\\"+x+".part"));
  7.                 }
  8.                 //v.add(new FileInputStream("e:\\tupian\\0.part"));
  9.                 //v.add(new FileInputStream("e:\\tupian\\1.part"));
  10.                 //v.add(new FileInputStream("e:\\tupian\\2.part"));
  11.                 //v.add(new FileInputStream("e:\\tupian\\3.part"));
  12.                 Enumeration<FileInputStream> en=v.elements();
  13.                 SequenceInputStream sis=new SequenceInputStream(en);
  14.                 FileOutputStream fos=new FileOutputStream("e:\\tupian\\美女.jpg");
  15.                 int num=0;
  16.                 while ((sis.read())!=-1)
  17.                 {
  18.                         fos.write(num);
  19.                 }
  20.                 fos.close();
  21.                 sis.close();

  22.         }
复制代码
第二种
  1. public static void hebing2()throws IOException
  2.         {
  3.                 ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
  4.                 for (int x=0;x<=3 ;x++ )
  5.                 {
  6.                         al.add(new FileInputStream("e:\\tupian\\"+x+".part"));
  7.                 }
  8.                 final Iterator<FileInputStream> it=al.iterator();
  9.                 Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
  10.                 {
  11.                         public boolean hasMoreElements()
  12.                         {
  13.                                 return it.hasNext();
  14.                         }
  15.                         public FileInputStream nextElement()
  16.                         {
  17.                                 return it.next();
  18.                         }
  19.                 };
  20.                 SequenceInputStream sis=new SequenceInputStream(en);
  21.                 FileOutputStream fos=new FileOutputStream("e:\\tupian\\美女复写.jpg");
  22.                 int num=0;
  23.                 while ((num=sis.read())!=-1)
  24.                 {
  25.                         fos.write(num);
  26.                 }
  27.                 sis.close();
  28.                 fos.close();
  29.         }
复制代码
这两个合并出来的图片大小是一样大的,但是第一个合并出来的图片打开什么都没有,什么情况?

2 个回复

倒序浏览
  int num=0;

16.                while ((sis.read())!=-1)

17.                {

18.                        fos.write(num);

19.               }
你的第一 while循环中没有给num赋值,fos.write(num);一直写的的是0
回复 使用道具 举报
{:soso_e127:}我晕,,这个小错误。。。谢了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马