本帖最后由 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方法不是很懂,求帮助!
下面是我的代码:- public static void sequenceDemo()throws IOException{
- Vector<FileInputStream> v=new Vector<FileInputStream>();
- File f=new File("D:\\java\\day20\\splitparts");
- File[] files=f.listFiles();
- String[] str=f.list();
- FileInputStream fis=null;
- System.out.println(f);
- //for(File file:files){
- //System.out.println(s);
- //String sb=f.getPath()+"\\"+s;
- //System.out.println(file);
- //fis=new FileInputStream(file);
- //v.add(fis);
-
- //}
- for(String s:str){
- if(s.endsWith(".part")){ //把这层判断去掉,也就是再次加载上一次重装好的MP3,会出现下面的死循环
- System.out.println(s);
- fis=new FileInputStream(f+"\\"+s);
- v.add(fis);
- //fis.close();,加了报错read error
- }
- }
- SequenceInputStream sis=new SequenceInputStream(v.elements());
- byte[] b=new byte[1024*1024];
- int len=0;
- FileOutputStream fos=new FileOutputStream("D:\\java\\day20\\splitparts\\new_atreyu.mp3");
- while((len=sis.read(b))!=-1){
- fos.write(b,0,len);
- }
- fis.close();
- sis.close();
- fos.close();
-
- }
复制代码 这是切割后的图片,如果吧endsWith判断去掉,上次重装过的MP3不删除,就出现问题
|