1文件切割
直接上代码:
package com.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 文件切割
* @author duanyitao
*
*/
public class SplitFile {
public static void main(String[] args) throws Exception{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("1.jpg")));
BufferedOutputStream bos = null;
byte[] buf = new byte[bis.available()/3];
System.out.println(buf.length);
int len = 0;
int count = 0;
while((len = bis.read(buf))!=-1){
bos = new BufferedOutputStream(new FileOutputStream(new File("1_"+(++count)+".jpg.part")));
bos.write(buf,0,len);
bos.flush();
bos.close();
}
bis.close();
}
}
2文件合并
直接上代码:
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
public class MergeFile {
public static void main(String[] args) throws Exception {
final List<InputStream> list = new ArrayList<InputStream>();
for (int i = 1; i < 5; i++) {
list.add(new FileInputStream("1_"+i+".jpg.part"));
System.out.println("1_"+i+".jpg.part");
System.out.println(new File("1_"+i+".jpg.part").exists());
}
Enumeration<InputStream> en = new Enumeration<InputStream>() {
@Override
public InputStream nextElement() {
// TODO Auto-generated method stub
return list.iterator().next();
}
@Override
public boolean hasMoreElements() {
// TODO Auto-generated method stub
return list.iterator().hasNext();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("duanyitao_1.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len = sis.read(buf))!=-1){
fos.write(buf,0,len);
fos.flush();
}
fos.close();
sis.close();
}
}