Introducción
En este proyecto, aprenderás a fusionar múltiples archivos de texto línea por línea de manera alternada. Esta es una tarea común en el procesamiento de datos y la gestión de archivos, donde es posible que necesites combinar el contenido de varios archivos en un solo archivo.
🎯 Tareas
En este proyecto, aprenderás:
- Cómo preparar los archivos de entrada necesarios para el proceso de fusión de archivos
- Cómo implementar una función para fusionar el contenido de los archivos de entrada
- Cómo ejecutar el proceso de fusión de archivos y verificar la salida
🏆 Logros
Después de completar este proyecto, podrás:
- Trabajar con operaciones de E/S de archivos en Java, incluyendo la lectura y escritura en archivos
- Utilizar las clases de archivos y flujos integradas de Java para manejar operaciones de archivos
- Implementar un algoritmo personalizado de fusión de archivos para combinar el contenido de múltiples archivos
- Probar y verificar la corrección del proceso de fusión de archivos
Implementar la función de fusión
En este paso, implementarás la función merge para fusionar el contenido de los archivos de entrada.
Abre el archivo
FileMerge.javaen el directorio/home/labex/project.Localiza la función
mergey reemplaza el código existente con la siguiente implementación:
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];
// Abre los readers para cada archivo fuente
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);
}
// Fusiona las líneas de cada archivo
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;
}
}
}
// Cierra los readers
for (BufferedReader reader : readers) {
reader.close();
}
}
}
Esta implementación abre un BufferedReader para cada archivo de entrada, lee las líneas de cada archivo y escribe las líneas en el archivo de salida de manera alternada. Si un archivo no tiene más líneas, se salta hasta que todas las líneas de todos los archivos hayan sido escritas en el archivo de salida.
Ejecutar el proceso de fusión de archivos
En este paso, ejecutarás el proceso de fusión de archivos y verificarás la salida.
Abre el archivo
FileMerge.javaen el directorio/home/labex/project.Localiza la función
mainy asegúrate de que el arraystrscontenga los nombres de los archivos de entrada:"1.txt","2.txt"y"3.txt".Ejecuta la clase
FileMergeejecutando el siguiente comando en la terminal:
javac FileMerge.java
java FileMerge
Después de que el programa se ejecute correctamente, se creará un nuevo archivo llamado
0.txten el directorio/home/labex/project. Este archivo contendrá el contenido fusionado de los archivos de entrada.Abre el archivo
0.txty verifica que el contenido coincida con la salida esperada:
1
6
7
2
8
3
9
4
5
¡Felicidades! Has completado con éxito el proyecto de fusión de archivos.
Resumen
¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



