/*
切割文件:
*/
import java.io.*;
import java.util.*;
class SplitFile{
public static void main(String[] args)throws IOException{
splitFile();
merge();
}
//切割文件
public static void splitFile()throws IOException{
//建立要切割的文件
FileInputStream fis = new FileInputStream("C:\\1.bmp");
FileOutputStream fos = null;
byte[] buffer = new byte[1024*1024];//1M
int length = 0;
int count = 1;
while((length = fis.read(buffer)) != -1){
fos = new FileOutputStream("C:\\splitfiles\\"+(count++)+".part");
fos.write(buffer,0,length);//分别写
fos.close();
}
fis.close();
}
//合并文件
public static void merge(){
//建立ArrayList集合
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
//将三个部分加入集合
for(int i = 1; i <= 3; i++){
al.add(new FileInputStream("C:\\splitfiles\\"+i+"part"));
}
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>(){
public boolean hasMoreElements(){
return it.hasNext();
}
public FileInputStream nextElements(){
return it.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("C:\\splitfiles\\0.bmp");
byte[] buffer = new byte[1024];
int length = 0;
while((length = sis.read(buffer)) != -1){
fos.write(buffer,0,length);
}
fos.close();
sis.close();
}
}