package cn.bl.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JFileChooser;

import org.junit.Test;
/**
* 演示文件切割
* @author BarryLee
* @2018年10月18日@上午12:00:59
*/
public class SplitFile {

@Test
public void testSplit() {
JFileChooser chooser = new JFileChooser();//弹出文件选择窗口
int i = chooser.showOpenDialog(null);
if(i == JFileChooser.APPROVE_OPTION) {//选中某个文件
File file = chooser.getSelectedFile();//选中的文件
//在选中的文件所在的目录下创建一个文件夹
File desDir = new File(file.getParentFile(), file.getName()+"Split");
split(file,desDir);
}
}
private void split(File file,File desDir) {
if(!desDir.exists()) {//路径不存在就创建一下
desDir.mkdirs();
}
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out = null;
byte[]bs = new byte[1024*1024];//切割大小为 1M 每个
int len = -1;
int count = 0;
while((len=in.read(bs))!=-1) {
//边创建边写入
File f = new File(desDir, file.getName()+(count++) +".bl");
out = new BufferedOutputStream(new FileOutputStream(f));
out.write(bs, 0, len);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}