#
public class FileSplitter {
public static void main(String[] args) {
String inputFile = "D:/data/ catalina.out";
String outFile = "D:/data/catalina";
int linesPerFile = 100000;
splitFile(inputFile, outFile, linesPerFile);
}
/**
*
* @param inputFile : 입력할 대용량파일의 전체패스
* @param outFile : 분리해서 출력할 파일명
* @param linesPerFile : 분리할 라인수
*/
public static void splitFile(String inputFile, String outFile, int linesPerFile) {
// 대용량 파일을 읽어들인다.
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile))) {
int fileNumber = 0;
String line;
int lineCount = 0;
// 대용량파일에서 분리되 출력할 파일명
BufferedWriter writer = new BufferedWriter(new FileWriter(outFile + "_" + String.format("%05d", fileNumber) + ".txt"));
while ((line = reader.readLine()) != null) {
if (lineCount == linesPerFile) {
writer.close();
fileNumber++;
writer = new BufferedWriter(new FileWriter(outFile + "_" + String.format("%05d", fileNumber) + ".txt"));
lineCount = 0;
}
writer.write(line);
writer.newLine();
lineCount++;
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}