Einführung
In diesem Projekt lernst du, wie du mehrere Textdateien zeilenweise abwechselnd zusammenführen kannst. Dies ist eine häufige Aufgabe bei der Datenverarbeitung und Dateiverwaltung, bei der du möglicherweise den Inhalt mehrerer Dateien in eine einzelne Datei kombinieren musst.
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du die erforderlichen Eingabedateien für den Dateizusammenführungsvorgang vorbereitest
- Wie du eine Funktion implementierst, um die Inhalte der Eingabedateien zusammenzuführen
- Wie du den Dateizusammenführungsvorgang ausführst und die Ausgabe überprüfst
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Mit Datei-E/A-Operationen in Java umzugehen, einschließlich des Lesens aus und Schreibens in Dateien
- Java's integrierte Datei- und Streamklassen zur Handhabung von Dateioperationen zu verwenden
- Einen benutzerdefinierten Dateizusammenführungsalgorithmus zu implementieren, um die Inhalte mehrerer Dateien zu kombinieren
- Den Dateizusammenführungsvorgang zu testen und die Korrektheit zu überprüfen
Implementiere die Merge-Funktion
In diesem Schritt wirst du die merge-Funktion implementieren, um die Inhalte der Eingabedateien zusammenzuführen.
Öffne die Datei
FileMerge.javaim Verzeichnis/home/labex/project.Locate die
merge-Funktion und ersetze den vorhandenen Code durch die folgende Implementierung:
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];
// Öffne Leser für jede Quell-Datei
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);
}
// Verschmelze Zeilen aus jeder Datei
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;
}
}
}
// Schließe Leser
for (BufferedReader reader : readers) {
reader.close();
}
}
}
Diese Implementierung öffnet einen BufferedReader für jede Eingabedatei, liest die Zeilen aus jeder Datei und schreibt die Zeilen in die Ausgabedatei abwechselnd. Wenn eine Datei keine weiteren Zeilen hat, wird sie übersprungen, bis alle Zeilen aus allen Dateien in die Ausgabedatei geschrieben wurden.
Führe den Dateizusammenführungsvorgang aus
In diesem Schritt wirst du den Dateizusammenführungsvorgang ausführen und die Ausgabe überprüfen.
Öffne die Datei
FileMerge.javaim Verzeichnis/home/labex/project.Locate die
main-Funktion und überprüfe, ob das Arraystrsdie Namen der Eingabedateien enthält:"1.txt","2.txt"und"3.txt".Führe die
FileMerge-Klasse aus, indem du den folgenden Befehl im Terminal ausführst:
javac FileMerge.java
java FileMerge
Nachdem das Programm erfolgreich ausgeführt wurde, wird eine neue Datei namens
0.txtim Verzeichnis/home/labex/projecterstellt. Diese Datei wird den zusammengeführten Inhalt der Eingabedateien enthalten.Öffne die Datei
0.txtund überprüfe, ob der Inhalt mit der erwarteten Ausgabe übereinstimmt:
1
6
7
2
8
3
9
4
5
Herzlichen Glückwunsch! Du hast das Dateizusammenführungs-Projekt erfolgreich abgeschlossen.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



