大文件拆分 SplitBigFile .java
package com.uniz.tools;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.DecimalFormat;
public class SplitBigFile {
public static void main(String[] args) {
splitBigFile();
}
public static void splitBigFile() {
String bigFilePath = "E:/bigfile.txt";
String targetDir = "E:/Temp/";
int maxLine = 200000;
String start = "A";
try {
File bigFile = new File(bigFilePath);
int count = 0;
DecimalFormat df = new DecimalFormat("000");
String newName = bigFile.getName();
BufferedReader reader = new BufferedReader(new FileReader(bigFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(targetDir, start + df.format(++count)) + newName));
String line = null;
int lineNum = 0;
while((line = reader.readLine()) != null){
lineNum++;
writer.write(line+"\r\n");
if(lineNum == maxLine){
lineNum = 0;
close(writer);
writer = new BufferedWriter(new FileWriter(new File(targetDir, start + df.format(++count)) + newName));
}
}
close(writer);
close(reader);
System.out.println("成功拆分为"+count+"个小文件,详见目录:\n" + targetDir);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void close(BufferedReader reader) {
if(reader!=null){
try {
reader.close();
} catch (Exception e) {
}
}
}
public static void close(BufferedWriter writer) {
if(writer!=null){
try {
writer.close();
} catch (Exception e) {
}
}
}
}