黑马程序员技术交流社区

标题: 合并的两个方式 为什么第一个合并出来的有问题 [打印本页]

作者: hubby    时间: 2013-11-20 19:32
标题: 合并的两个方式 为什么第一个合并出来的有问题
第一个合并是用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.         }
复制代码
这两个合并出来的图片大小是一样大的,但是第一个合并出来的图片打开什么都没有,什么情况?
作者: @ne_pie尒ce    时间: 2013-11-20 20:00
  int num=0;

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

17.                {

18.                        fos.write(num);

19.               }
你的第一 while循环中没有给num赋值,fos.write(num);一直写的的是0
作者: hubby    时间: 2013-11-20 21:08
{:soso_e127:}我晕,,这个小错误。。。谢了。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2