This commit is contained in:
Luca Conte 2022-12-01 18:23:23 +01:00
parent 4af4b837b7
commit f929623e0b
4 changed files with 80 additions and 0 deletions

BIN
uebungen/u25/Diff.class Normal file

Binary file not shown.

68
uebungen/u25/Diff.java Normal file
View File

@ -0,0 +1,68 @@
import java.io.*;
import java.util.*;
/**
* Klasse zum Vergleichen von Dateien
*/
public class Diff {
public static void main(String[] args) {
diff("f1.txt","f2.txt");
}
/**
* Vergleicht zwei Dateien und gibt deren Unterschiede
* Zeilenweise aus
*/
public static void diff(String filename1, String filename2) {
Scanner scan1 = openFile(filename1);
if (scan1 == null) return;
Scanner scan2 = openFile(filename2);
if (scan2 == null) {
scan1.close();
return;
}
boolean foundDiff = false;
for ( int zeile = 1; scan1.hasNextLine() || scan2.hasNextLine(); zeile++) {
String line1 = nextLine(scan1);
String line2 = nextLine(scan2);
if (!line1.equals(line2)) {
foundDiff = true;
System.out.println("Zeile " + zeile + ":");
System.out.println("< " + line1);
System.out.println("> " + line2);
}
}
if (!foundDiff) {
System.out.println("Keine Unterschiede gefunden");
}
}
/**
* Oeffnet eine Datei mit einem Scanner und gibt diesen
* zurueck
* Falls die Datei nicht gefunden werden kann, wird eine
* Fehlermeldung ausgegeben und der Rueckgabewert ist null
*/
public static Scanner openFile(String filename) {
try {
return new Scanner(new File(filename));
} catch (FileNotFoundException e) {
System.out.println("Kann Datei nicht finden: " + filename);
return null;
}
}
/**
* Gibt die naechste Zeile eines Scanners aus
* Falls es keine naechste Zeile gibt, wird stattdessen
* ein leerer String zurueckgegeben
*/
public static String nextLine(Scanner scan) {
if (scan.hasNextLine()) return scan.nextLine();
return "";
}
}

7
uebungen/u25/f1.txt Normal file
View File

@ -0,0 +1,7 @@
Yallo
Wie
Gehts
So
;)
nice

5
uebungen/u25/f2.txt Normal file
View File

@ -0,0 +1,5 @@
Yallo
Wie
Geht's
So
;)