黑马程序员技术交流社区
标题:
这文件合并总是失败不知什么原因?文件分离可以的
[打印本页]
作者:
靓仔
时间:
2013-11-5 15:37
标题:
这文件合并总是失败不知什么原因?文件分离可以的
import java.io.*;
import java.util.*;
class SplitFile
{
public static void main(String[] args)throws IOException
{
//splitfile();
hebing();
}
public static void hebing()throws IOException
{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int x=1;x<=4; x++)
{
al.add(new FileInputStream("D:\\splitFiles\\"+x+".part"));
final Iterator<FileInputStream> it =al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("D:\\splitFiles\\2.mp3");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
public static void splitfile()throws IOException
{
FileInputStream fis=new FileInputStream("D:\\1.mp3");//关联文件
FileOutputStream fos=null;
byte[] buf = new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream("D:\\splitFiles\\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
fos.close();
}
}
作者:
零下五度的水
时间:
2013-11-5 16:30
for(int x=1;x<=4; x++),你的x<=4最好指明那个4是什么,目测是碎片文件个数
那这个for循环就是为了把所有的碎片文件整合到ArrayList<FileInputStream> al 集合中
那你的for循环只要包含al.add(new FileInputStream("D:\\splitFiles\\"+x+".part"));一条语句即可
你的程序报错是 java.io.IOException: 当文件已存在时,无法创建该文件。
明显是循环 FileOutputStream fos=new FileOutputStream("D:\\splitFiles\\2.mp3"); 时发生的问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2