2 Text-Dateien vergleichen

kalyx

Mitglied
Hallo,

Es ist schon etwas länger her als ich etwas mit Java Programmiert habe. Ich habe bereits ein Programm geschrieben, aber es macht nicht das was ich eigentlich will. Ich weiss nicht ob mein vorhaben überhaupt möglich ist. Es stellte sich als viel schwieriger und komplizierter herraus als ich anfangs dachte. Ich habe 2 Text-Dateien die z.b. so aussehen:

Datei1:
Code:
#
#
# Kommentar
#
#

1932899241	min-dvp2
1932899242	min-hein
1932899231	min-ains

1932899233	min-onau

# Kommentar

101026732	DEREU1P0038
101026136	DEREU1P0056			# Kommentar

1010211265	FRSJU1P0025

Datei2:
Code:
#
#
# Kommentar
#
#

101026732	DEREU1P0038
101026136	DEREU1P0056			# Kommentar
1010211264	FRSJU1P0024


# Kommentar
1932899241	min-dvp2

1932899231	min-hein
1932899232	min-ains
1932899233	min-onau

1. In Datei1 können Daten stehen die in Datei2 nicht stehen und umgekehrt.
2. In Datei1 können die gleichen Daten stehen wie in Datei2 aber an anderer Stelle.
3. In beiden Dateien können Dublikate vorkommen.

Mein Program sieht bisher so aus:
Java:
package test;

import java.io.*;
import java.util.Scanner;

public class Main
{
	public static void main(String[] args) throws IOException
	{
		String curString1, curString2, writeString1, writeString2;
		
		Scanner fileReader1 = new Scanner(new File("D:\\work\\datei1.txt"));
		Scanner fileReader2 = new Scanner(new File("D:\\work\\datei2.txt"));
		
		FileWriter fw = new FileWriter("D:\\work\\datei3.txt");
		BufferedWriter bw = new BufferedWriter(fw);
		PrintWriter out = new PrintWriter(bw);
		
			while (fileReader1.hasNext())
			{
				out.println(fileReader1.nextLine());
			}

			while (fileReader2.hasNext())
			{
				out.println(fileReader2.nextLine());
			}

		out.close();
	}
}

Ich habe viel ausprobiert. Das hier war noch das brauchbarste was dabei herrausgekommen ist. Das ist wie bereits oben geschrieben nicht das richtige Ergebnis, aber hoffentlich ein guter Ansatz.

Ziel soll sein das als Ergebnis des Programms die Unterschiede und die Dublikate angezeigt werden. Ich hoffe ich habe alles ausführlich beschrieben. Es wird wohl nicht so einfach zu lösen sein.

Viele Grüße,
Matthias
 
A

anonym

Gast
Dein Code macht ja nichts anderes, als beide Dateien Zeile für Zeile einzulesen und die zweite an die Erste anzuhängen. Die dadurch entstehende neue Datei schreibt er dann in den BufferedWriter. Im übrigen kannst du dir den PrintWriter sparen. BufferedWriter hat selbst ein writeln() mit derselben Funnktion wie das println().

Ich würde mit javaCC oder sableCC einen Parser bauen. Der macht aus den Textdateien Collectionklassen mit Objekten, die die Daten halten.
In den Collections kannst du dann rumsuchen, sortieren und vergleichen soviel du willst. Eventuell empfiehlt es sich, die equals- Methode zu überschreiben, damit gleiche Datensätze auch mit equals true erkannt werden. Das vereinfacht die Erkennung enorm.
 

kalyx

Mitglied
Das hört sich gut an, aber dafür reicht mein Java-Wissen bei weitem nicht aus. Hast du oder jemand anders vielleicht einen Lösungsvorschlag als Quelltext?
 
A

anonym

Gast
Sorry, aber wir (oder zumindest ich ;) ) helfen dir wenn du es probierst, programmieren aber nichts für dich fertig.

Zweite Variante:

Du liest jetzt schon zeilenweise als String ein. Schreib diese Strings nicht in einen anderen Writer, sondern in eine Collection. Strings die mit # anfangen (deine Kommentare) lässt du einfach weg. (charAt(0) liefert dir das erste Zeichen, ein if sagt dir, ob es ein Kommentar ist).
Anschließend kannst du auf der Collection mit den Methoden der Collection und der Collections- Klasse nach Duplikaten usw. suchen. Dabei kannst du nur nicht feststellen, ob bei einem doppelten Eintrag beide aus derselben Datei oder aus unterschiedlichen kommen. Wenn du das brauchst, lässt sich das aber leicht nachrüsten (zwei Collections nehmen).

Du darfst gerne weiterfragen, wenn du was davon nicht verstehst.
 

Java-Freak

Bekanntes Mitglied
du könntest immer wenn du eine brauchbare zeile findest(die nicht mit # beginnt) sie in eine ArrayList schreiben.
später könntest du die 2 ArrayLists dann vergleichen.
ungefähr so:
Code:
in array List1 sind die daten aus datei 1 gespeichert und in ArrayList die aus 2
für jeden eintrag in arrayList1:
   varialbe bla ist der eintrag
   varialbe zähler ist die anzahl der vorkommen eines eintrags
   für jeden eintrag in arrayList2
      wenn eintrag(i) bla entspricht
         zähler++
      *wenn
   *für
   gebe aus: bla + "kommt"+zähler +"vor" 
*für
...so in etwa
 

kalyx

Mitglied
Unter diff habe ich auch schon gesucht aber nichts passendes gefunden.
Ich habe das ganze auch schon mit hilfe einer batch datei versucht. das hat halbswegs funktioniert, aber mit java hat man mehr möglichkeiten.
weiss denn keiner eine lösung, bzw. hat ein paar code snippets?
 

y0dA

Top Contributor
Du hast doch eh schon genug Vorschläge bekommen wie du das Problem angehen könntest - es wird dir hier wohl eher keiner eine fertige Lösung anbieten.

Du kannst doch einfach im Google nach Zeug suchen welches Dateien aus einer Datei einliest und dann, je nachdem wie du es lösen möchtest, in ein Objekt schreibt etc.

Ist ja nicht wirklich schwer, du liest dir Datei 1 ein und iterierst darüber und hierbei schreibst du die Zeilen in eine Collection od. wie auch immer. Danach die 2. Datei einlesen und die Zeilen wieder in eine Collection und danach kannst du beide Collections miteinander vergleichen wie du möchtest.
 
Zuletzt bearbeitet:

kalyx

Mitglied
Wie bereits geschrieben reichen meine Programmierkenntnisse dafür leider nicht aus und ohne hilfe komm ich an dieser Stelle nicht weiter. Ich werd mal noch in einem anderen Forum fragen. Trotzdem danke.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
L Input/Output Text Dateien einlesen, bearbeiten und speichern Java Basics - Anfänger-Themen 9
N Lesen aus (Text)Dateien Java Basics - Anfänger-Themen 7
R Collections Text-Dateien auf Gleichheit überprüfen Java Basics - Anfänger-Themen 22
C Problem mit Lesen und Speichern und Verarbeiten von großen Text Dateien Java Basics - Anfänger-Themen 5
D text dateien mit RandomAccessFile manipulieren Java Basics - Anfänger-Themen 6
G Dateien erstellen / Text in Dateien schreiben Java Basics - Anfänger-Themen 8
C Text Dateien aus einem Ordner auslesen? Java Basics - Anfänger-Themen 3
S Große Text dateien einbinden Java Basics - Anfänger-Themen 3
G Text aus verschiedenen Dateien in JTextArea laden Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
D Text als Code in java-forum.com formatieren. Wie ? Java Basics - Anfänger-Themen 3
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Erste Schritte Verschlüsselung von text Java Basics - Anfänger-Themen 21
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
H Suche in Text und Markierung Java Basics - Anfänger-Themen 14
H Suche in einem Text Java Basics - Anfänger-Themen 17
F Input/Output Text einlesen lassen Java Basics - Anfänger-Themen 14
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Text und Ganzzahl in einer Dialogbox Java Basics - Anfänger-Themen 5
D Text Adventure Erstellen Java Basics - Anfänger-Themen 10
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
J JTextArea visible ohne Text Java Basics - Anfänger-Themen 3
D Bild zu Text Java Basics - Anfänger-Themen 4
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
S Java Label hat komischen text Java Basics - Anfänger-Themen 4
F Text anhand bestimmter Trennzeichen in Textteile trennen (netbeans) Java Basics - Anfänger-Themen 7
S Ausgabe von Text Formatieren Java Basics - Anfänger-Themen 6
H Text in einen Button quetschen Java Basics - Anfänger-Themen 3
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
A Text teilen und Wörter zählen Java Basics - Anfänger-Themen 7
J Zahlen als Text übersetzen Java Basics - Anfänger-Themen 6
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
R Text Pane Aktualisierung erst nach JOptionPane Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
Z JSlider - Text wird nich angezeigt Java Basics - Anfänger-Themen 0
A Problem mit set.Text und übergabe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben