Introduction
Dans ce projet, vous allez apprendre à fusionner plusieurs fichiers texte ligne par ligne de manière alternée. C'est une tâche courante dans le traitement de données et la gestion de fichiers, où vous devrez peut-être combiner le contenu de plusieurs fichiers dans un seul fichier.
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment préparer les fichiers d'entrée nécessaires au processus de fusion de fichiers
- Comment implémenter une fonction pour fusionner le contenu des fichiers d'entrée
- Comment exécuter le processus de fusion de fichiers et vérifier la sortie
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Travailler avec les opérations d'entrée/sortie de fichiers en Java, y compris la lecture et l'écriture dans des fichiers
- Utiliser les classes de fichiers et de flux intégrées à Java pour gérer les opérations de fichiers
- Implémenter un algorithme de fusion de fichiers personnalisé pour combiner le contenu de plusieurs fichiers
- Tester et vérifier la correction du processus de fusion de fichiers
Implémentez la fonction de fusion
Dans cette étape, vous allez implémenter la fonction merge pour fusionner le contenu des fichiers d'entrée.
Ouvrez le fichier
FileMerge.javadans le répertoire/home/labex/project.Localisez la fonction
mergeet remplacez le code existant par la mise en œuvre suivante :
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];
// Ouvrez les lecteurs pour chaque fichier source
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);
}
// Fusionnez les lignes de chaque fichier
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;
}
}
}
// Fermez les lecteurs
for (BufferedReader reader : readers) {
reader.close();
}
}
}
Cette implémentation ouvre un BufferedReader pour chaque fichier d'entrée, lit les lignes de chaque fichier et écrit les lignes dans le fichier de sortie de manière alternée. Si un fichier n'a plus de lignes, il est ignoré jusqu'à ce que toutes les lignes de tous les fichiers aient été écrites dans le fichier de sortie.
Exécutez le processus de fusion de fichiers
Dans cette étape, vous allez exécuter le processus de fusion de fichiers et vérifier la sortie.
Ouvrez le fichier
FileMerge.javadans le répertoire/home/labex/project.Localisez la fonction
mainet assurez-vous que le tableaustrscontient les noms des fichiers d'entrée :"1.txt","2.txt"et"3.txt".Exécutez la classe
FileMergeen exécutant la commande suivante dans le terminal :
javac FileMerge.java
java FileMerge
Après l'exécution réussie du programme, un nouveau fichier nommé
0.txtsera créé dans le répertoire/home/labex/project. Ce fichier contiendra le contenu fusionné des fichiers d'entrée.Ouvrez le fichier
0.txtet vérifiez que le contenu correspond à la sortie attendue :
1
6
7
2
8
3
9
4
5
Félicitations! Vous avez réussi à compléter le projet de fusion de fichiers.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



