黑马程序员技术交流社区
标题:
关于切割后的重装。速救!!
[打印本页]
作者:
崔政
时间:
2012-10-30 23:56
标题:
关于切割后的重装。速救!!
本帖最后由 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不删除,就出现问题
zk.jpg
(60.13 KB, 下载次数: 13)
下载附件
2012-10-30 23:59 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2