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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔政 中级黑马   /  2012-10-30 23:56  /  1238 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cz2861856 于 2012-10-31 00:00 编辑

在毕老师day20的最后一个视频,切割文件中。
毕老师将一个3m的图片按1m的大小切成了三分。后又组装
我自己试了一下,
首先说明一下,day20目录下有一MP3,大小8MB,我也是1MB切的,切到day20目录下的splitparts目录下,一共九份,再组装出现过一次read error问题。现已解决
我要把splitparts目录下的九个碎片拼成一个MP3,并放在splitparts目录下。已经搞定。
现出现一问题,我第一次执行,没问题,重装成功。
第二次执行,如果不判断后缀名是不是.part,把第一次装好的mp3文件也加进Vector,会出现死循环!
很是不解,求高手解答,为什么会出现死循环!?给我整个1.8G的MP3,哎哟我去,要不是我发现的早,我的D盘就崩了!!

主要还是我对read方法不是很懂,求帮助!
下面是我的代码:
  1. public static void sequenceDemo()throws IOException{
  2.                 Vector<FileInputStream> v=new Vector<FileInputStream>();
  3.                 File f=new File("D:\\java\\day20\\splitparts");
  4.                 File[] files=f.listFiles();
  5.                 String[] str=f.list();
  6.                 FileInputStream fis=null;
  7.                 System.out.println(f);
  8.                 //for(File file:files){
  9.                         //System.out.println(s);
  10.                         //String sb=f.getPath()+"\\"+s;
  11.                         //System.out.println(file);
  12.                         //fis=new FileInputStream(file);
  13.                         //v.add(fis);
  14.                         
  15.                 //}
  16.                 for(String s:str){
  17.                         if(s.endsWith(".part")){           //把这层判断去掉,也就是再次加载上一次重装好的MP3,会出现下面的死循环
  18.                         System.out.println(s);
  19.                         fis=new FileInputStream(f+"\\"+s);
  20.                         v.add(fis);
  21.                         //fis.close();,加了报错read error
  22.                         }
  23.                 }
  24.                 SequenceInputStream sis=new SequenceInputStream(v.elements());        
  25.                 byte[] b=new byte[1024*1024];
  26.                 int len=0;
  27.                 FileOutputStream fos=new FileOutputStream("D:\\java\\day20\\splitparts\\new_atreyu.mp3");
  28.                 while((len=sis.read(b))!=-1){               
  29.                         fos.write(b,0,len);
  30.                 }
  31.                 fis.close();
  32.                 sis.close();
  33.                 fos.close();
  34.                
  35.         }
复制代码
这是切割后的图片,如果吧endsWith判断去掉,上次重装过的MP3不删除,就出现问题

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马