Programming > Java

Java로 대용량 파일을 분할하기

#

일정기준 라인으로 파일을 분리하는 예제

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();
        }
    }
}