packagejavax.utils;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Arrays;importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.IOUtils;/*** 文件切割工具类
*
*@authorLogan
* @createDate 2019-04-25
*@version1.0.0
**/
public classFileSplitUtils {/*** 默认切割大小*/
public static final int DEFAULT_SIZE = 1024 * 1024 * 4;/*** 切割指定源文件,并输出到指定目录,按默认大小切割
*
*@paramsrcFile 指定要切割的源文件
*@paramoutputDir 指定输出目录
*@throwsIOException 有异常时抛出,由调用者处理*/
public static void split(File srcFile, String outputDir) throwsIOException {
split(srcFile, outputDir, DEFAULT_SIZE);
}/*** 切割指定源文件,并输出到指定目录
*
*@paramsrcFile 指定要切割的源文件
*@paramoutputDir 指定输出目录
*@paramsize 切割大小
*@throwsIOException 有异常时抛出,由调用者处理*/
public static void split(File srcFile, String outputDir, int size) throwsIOException {try(
FileInputStream inputStream=FileUtils.openInputStream(srcFile);
) {
File temp= null;byte[] buffer = new byte[size];int len = 0;//IOUtils.read(inputStream, buffer) 读取完后,再读取则返回值为0
for (int i = 10000; (len = IOUtils.read(inputStream, buffer)) > 0; i++) {
temp=FileUtils.getFile(outputDir, String.valueOf(i));
FileUtils.writeByteArrayToFile(temp, buffer,0, len);
}
}
}/*** 聚形碎片
*
*@paraminputDir 碎片输入目录
*@paramdestFile 聚形目标文件
*@throwsIOException 有异常时抛出,由调用者处理*/
public static void combinateFormChips(String inputDir, File destFile) throwsIOException {
File inputPath=FileUtils.getFile(inputDir);
String[] files=inputPath.list();try(
FileOutputStream outputStream=FileUtils.openOutputStream(destFile);
) {//按文件名排序
Arrays.sort(files);for(String fileName : files) {
File file=FileUtils.getFile(inputPath, fileName);byte[] data =FileUtils.readFileToByteArray(file);
IOUtils.write(data, outputStream);
}
}
}
}