소개
이 프로젝트에서는 여러 텍스트 파일을 번갈아 가며 줄 단위로 병합하는 방법을 배우게 됩니다. 이는 여러 파일의 내용을 단일 파일로 결합해야 할 수 있는 데이터 처리 및 파일 관리에서 흔히 사용되는 작업입니다.
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 파일 병합 프로세스에 필요한 입력 파일을 준비하는 방법
- 입력 파일의 내용을 병합하는 함수를 구현하는 방법
- 파일 병합 프로세스를 실행하고 출력을 확인하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- Java 에서 파일 입출력 (I/O) 작업을 수행할 수 있으며, 파일에서 읽고 쓰는 작업 포함
- Java 의 내장 파일 및 스트림 클래스를 사용하여 파일 작업을 처리할 수 있습니다
- 여러 파일의 내용을 결합하는 사용자 정의 파일 병합 알고리즘을 구현할 수 있습니다
- 파일 병합 프로세스의 정확성을 테스트하고 확인할 수 있습니다
병합 기능 구현
이 단계에서는 입력 파일의 내용을 병합하는 merge 함수를 구현합니다.
/home/labex/project디렉토리에서FileMerge.java파일을 엽니다.merge함수를 찾아 기존 코드를 다음 구현으로 바꿉니다:
public static void merge(String[] sourcePath, String outPath) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(outPath))) {
BufferedReader[] readers = new BufferedReader[sourcePath.length];
String[] currentLines = new String[sourcePath.length];
boolean[] fileEmpty = new boolean[sourcePath.length];
// Open readers for each source file
for (int i = 0; i < sourcePath.length; i++) {
readers[i] = new BufferedReader(new FileReader(sourcePath[i]));
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
}
// Merge lines from each file
boolean allFilesEmpty = false;
while (!allFilesEmpty) {
allFilesEmpty = true;
for (int i = 0; i < sourcePath.length; i++) {
if (!fileEmpty[i]) {
writer.write(currentLines[i]);
writer.newLine();
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
allFilesEmpty = false;
}
}
}
// Close readers
for (BufferedReader reader : readers) {
reader.close();
}
}
}
이 구현은 각 입력 파일에 대해 BufferedReader를 열고, 각 파일에서 줄을 읽어 번갈아 가며 출력 파일에 줄을 씁니다. 파일에 더 이상 줄이 없으면 모든 파일의 모든 줄이 출력 파일에 기록될 때까지 건너뜁니다.
파일 병합 프로세스 실행
이 단계에서는 파일 병합 프로세스를 실행하고 출력을 확인합니다.
/home/labex/project디렉토리에서FileMerge.java파일을 엽니다.main함수를 찾아strs배열에 입력 파일의 이름인"1.txt","2.txt","3.txt"가 포함되어 있는지 확인합니다.터미널에서 다음 명령을 실행하여
FileMerge클래스를 실행합니다:
javac FileMerge.java
java FileMerge
프로그램이 성공적으로 실행되면
/home/labex/project디렉토리에0.txt라는 새 파일이 생성됩니다. 이 파일에는 입력 파일에서 병합된 내용이 포함됩니다.0.txt파일을 열고 내용이 예상 출력과 일치하는지 확인합니다:
1
6
7
2
8
3
9
4
5
축하합니다! 파일 병합 프로젝트를 성공적으로 완료했습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



