Введение
В этом проекте вы научитесь объединять несколько текстовых файлов по строкам в чередующемся порядке. Это распространенная задача в обработке данных и управлении файлами, где может потребоваться объединить содержимое нескольких файлов в один файл.
🎯 Задачи
В этом проекте вы научитесь:
- Как подготовить необходимые входные файлы для процесса объединения файлов
- Как реализовать функцию для объединения содержимого входных файлов
- Как запустить процесс объединения файлов и проверить выходные данные
🏆 Достижения
После завершения этого проекта вы сможете:
- Работать с операциями ввода-вывода файлов в Java, включая чтение из и запись в файлы
- Использовать встроенные классы файлов и потоков Java для обработки операций с файлами
- Реализовать пользовательский алгоритм объединения файлов для объединения содержимого нескольких файлов
- Тестировать и проверять правильность процесса объединения файлов
Реализуйте функцию объединения
В этом шаге вы реализуете функцию merge, чтобы объединить содержимое входных файлов.
Откройте файл
FileMerge.javaв директории/home/labex/project.Найдите функцию
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];
// Откройте читатели для каждого исходного файла
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);
}
// Объедините строки из каждого файла
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;
}
}
}
// Закройте читатели
for (BufferedReader reader : readers) {
reader.close();
}
}
}
Данная реализация открывает BufferedReader для каждого входного файла, читает строки из каждого файла и записывает строки в выходной файл в чередующемся порядке. Если в файле больше нет строк, он пропускается, пока не будут записаны все строки из всех файлов в выходной файл.
Запустите процесс объединения файлов
В этом шаге вы запустите процесс объединения файлов и проверите выходные данные.
Откройте файл
FileMerge.javaв директории/home/labex/project.Найдите функцию
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, чтобы улучшить свои навыки.



