파일에서 특정 라인 단위로 분할하거나, 분할된 파일을 병합해야 할 때 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를 사용하면 파일을 더욱 쉽고 효율적으로 다룰 수 있습니다. 이 라이브러리를 사용하여 파일을 분할하고 병합하는 방법을 알아보았습니다. 추가로 다양한 기능을 제공하므로 필요에 따라 더욱 사용할 수 있습니다.