import java.util.*;
import java.io.*;
class SplitDemo
{
public static void main(String[] args) throws IOException
{
//File file=new File("D:\我想念你.mp3");
File dir=new File("D:\splitfiles");
//String storeDir=dir.toString();
//splitFile(file);
bondFile(dir);
}
public static void splitFile(File file)throws IOException{//文件切割
FileInputStream fis=new FileInputStream(file);//创建读取流对象与被切割文件关联
FileOutputStream fos=null;
byte[] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1){
//每读取1024KB源文件,则用输出流存储1024KB文件到指定目录下,然后输出流
fos=new FileOutputStream("D:\splitfiles\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
}
public static void bondFile(File dir)throws IOException{//将指定目录文件内的同类型文件进行粘合,再将粘合后的文件存回
Vector<FileInputStream> v=new Vector<FileInputStream>();//创建Vector集合对象v,用来存储文件输入流对象
File[] files=dir.listFiles();
for(File file:files){//遍历目录文件,将符合条件的文件与流关联,并存储到Vector集合中
if(file.getName().endsWith(".part"));
v.add(new FileInputStream(file));
}
Enumeration<FileInputStream> en=v.elements();
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream(dir);
byte[] buf=new byte[1024*1024];
int len=0;
while((len=sis.read(buf))!=-1){
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}