[java] 파일 라인 단위로 분할 및 병합을 위한 Apache Commons IO 사용법

파일에서 특정 라인 단위로 분할하거나, 분할된 파일을 병합해야 할 때 Apache Commons IO 라이브러리는 매우 유용한 도구입니다. 이 라이브러리는 간편한 API를 제공하여 파일 작업을 더욱 효율적으로 수행할 수 있습니다.

Apache Commons IO 라이브러리 추가하기

먼저, Apache Commons IO 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해 Maven을 사용하는 경우, pom.xml 파일에 다음 종속성을 추가합니다:

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.11.0</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가합니다:

implementation 'commons-io:commons-io:2.11.0'

이제 Apache Commons IO를 사용할 준비가 되었습니다.

파일 분할하기

파일을 라인 단위로 분할하기 위해서는 LineIterator 클래스를 사용합니다. 다음은 파일을 읽고 각 라인을 출력하는 예제입니다:

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

import java.io.File;
import java.io.IOException;

public class FileSplitter {
    public static void main(String[] args) {
        File file = new File("input.txt");
        
        try (LineIterator iterator = FileUtils.lineIterator(file, "UTF-8")) {
            while (iterator.hasNext()) {
                String line = iterator.nextLine();
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 FileUtils.lineIterator() 메서드를 사용하여 파일을 반복적으로 읽을 수 있습니다. hasNext() 메서드를 사용하여 파일 끝을 확인하고, nextLine() 메서드를 사용하여 다음 라인을 읽습니다.

파일 병합하기

파일을 병합하기 위해서는 FileUtils 클래스의 writeLines() 메서드를 사용합니다. 다음은 두 개의 파일을 병합하는 예제입니다:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileMerger {
    public static void main(String[] args) {
        File file1 = new File("file1.txt");
        File file2 = new File("file2.txt");
        File mergedFile = new File("merged.txt");

        try {
            List<String> lines = new ArrayList<>();
            lines.addAll(FileUtils.readLines(file1, "UTF-8"));
            lines.addAll(FileUtils.readLines(file2, "UTF-8"));
            FileUtils.writeLines(mergedFile, lines);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 readLines() 메서드를 사용하여 두 개의 파일을 읽은 후, writeLines() 메서드를 사용하여 병합된 파일에 쓰는 방법을 보여줍니다.

결론

Apache Commons IO를 사용하면 파일을 더욱 쉽고 효율적으로 다룰 수 있습니다. 이 라이브러리를 사용하여 파일을 분할하고 병합하는 방법을 알아보았습니다. 추가로 다양한 기능을 제공하므로 필요에 따라 더욱 사용할 수 있습니다.

참고 자료