import java.io.*;
import java.nio.channels.FileChannel;
public class FileSplitUtil {
public static void main(String[] args) throws IOException {
String sourceFilePath = "E:\\test\\aa";
String destFilePath = "E:\\test\\aa_";
fileSplit(sourceFilePath, destFilePath, 2);
}
/**
* 拆分文件夹为n个文件夹
* @param sourceFilePath
* @param destFilePath
* @param num
* @throws IOException
*/
public static void fileSplit(String sourceFilePath, String destFilePath, int num) throws IOException {
File file = new File(sourceFilePath);
if (!file.exists()) {
System.err.println(sourceFilePath + "不存在!");
return;
}
File[] files = file.listFiles();
String newFilePath = null;
for (int i = 0; i < files.length; i++) {
if (i % num == 0){
newFilePath = destFilePath + (i / num);
File newFile = new File(newFilePath);
newFile.mkdirs();
}
copyFileUsingFileChannels(files[i], new File(newFilePath + "\\" + files[i].getName()));
}
}
/**
* 使用FileChannel复制文件
* @param source
* @param dest
* @throws IOException
*/
private static void copyFileUsingFileChannels(File source, File dest) throws IOException {
FileChannel inputChannel = null;
FileChannel outputChannel = null;
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(source);
fileOutputStream = new FileOutputStream(dest);
inputChannel = fileInputStream.getChannel();
outputChannel = fileOutputStream.getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} finally {
inputChannel.close();
outputChannel.close();
fileOutputStream.close();
fileInputStream.close();
}
}
}
05-27
558