Vergleichen von 2 txt bzw. html-Dateien?

Status
Nicht offen für weitere Antworten.

Enfa

Mitglied
Hallo @ all,

Mein Java-Programm muss HTML-Dateien erstellen.

Jetzt muss mein Programm die Inhalte der einzelne HTML-Dateien überprüfen. Falls der Inhalt der HTML-Datei geändert hat, dann muss ein neues HTML-Datei erzeugt werden.

Zu Überprüfung habe ich jetzt folgende Idee:

Nach dem ich das HTML-Datei erzeugt habe, hole ich den Inhalt mit StringBuffer und erstelle mit der Funktion hashCode() einen HashCode zu dem Inhalt und speichere den in einem txt-File.

Z.B. starte ich mein Programm nach 2 Tagen, um zu überprüfen, ob sich der Inhalt verändert hat. Ich erzeuge das HTML-Datei und erzeuge ebenfalls den HashCode.

Nun, vergleiche diesen HashCode mit dem HashCode, dass ich im txt-Datei gespeichert habe.

Nun die Frage:

Wenn die HashCode's nicht identisch sind, haben sich die Inhalte dann geändert? Eigentlich schon.

Ich könnte auch die beiden StringBuffer miteinander vergleichen. Ich glaube aber, dass es mit HashCode schneller geht. Denn ich muss 52 HTML-Datei miteinander vergleichen.

ich war mir nicht sicher, ob meine Idee so in Ordnung ist.

Was meint ihr?

Oder habt ihr eine andere Idee, wie ich die Inhalte vergleichen kann?


Vielen Dank im Voraus.

Bye
 

moormaster

Top Contributor
Enfa hat gesagt.:
Nun die Frage:

Wenn die HashCode's nicht identisch sind, haben sich die Inhalte dann geändert? Eigentlich schon.

Wenn sich die Hashcodes unterscheiden, dann hat sich die Datei auf jeden Fall geändert.

Unterscheiden sich die Hashcodes nicht, ist keine Aussage möglich. Die Daten könnten gleich geblieben sein, könnten sich aber auch geändert haben. Das heisst, wenn die Hashcodes gleich sind, dann musst du auf jeden Fall den gesamten Inhalt der Datei mit dem neuen Inhalt vergleichen, um eine Änderung festzustellen.


Ich könnte auch die beiden StringBuffer miteinander vergleichen. Ich glaube aber, dass es mit HashCode schneller geht. Denn ich muss 52 HTML-Datei miteinander vergleichen.

Jap Hashcode kann schneller gehen; jedoch nicht in jeder Situation. Unterscheiden sich die Hashcodes, geht es schneller, weil du dir dann das Vergleichen der exakten Dateiinhalte sparst. Aber wie gesagt, wenn der Hashcode gleich ist, musst du so oder so alles überprüfen, um Gleichheit festzustellen.

Wahrscheinlich sparst du in deinem Fall am meisten Zeit, wenn du anstatt den gesamten Dateiinhalt zu vergleichen einfach mit dem neuen Inhalt überschreibst und fertig ist. Das würde dann aber bedeuten:

Hashcodes ungleich -> Datei neu schreiben
Hashcodes gleich -> Datei neu schreiben, da es ähnlich lange Dauert, wie das Vergleichen der kompletten Datei

Was dich dahin führt, dass es am besten ist, die Hashcode-Sache ganz weg zu lassen und immer neu zu schreiben :D


Der Hashcode lohnt sich dann, wenn man nach Dateien sucht, die gleich sind (und nicht nach denen, die ungleich sind). Weil dann reduziert sich die Menge der zu vergleichenden Dateien auf die, wo die Hashcodes gleich sind. Aber der HashCode liefert keine nützlichen Infos, um Dateien schneller zu finden, die ungleich sind, da potentiell jede Datei ungleich sein kann, egal ob der HashWert mit dem der gesuchten Datei übereinstimmt oder nicht.
 
B

bygones

Gast
mhm... ist mir gerade aufgefallen...

verwende nicht den StringBuffer direkt fuer den hashCode - egal was in dem Buffer drinsteht, es kommt immer der gleiche HashCode raus.

erst wenn du es in einem String umwandelst kommt es richtig...

und wenn du unter linux arbeitest (bzw. vll gibts unter windows was aehnliches) - einfach systemcalls und ueber diff abfragen ;-)
 

Enfa

Mitglied
Hallo nochmals,

vielen Dank für die Antworten.

Aber bin jetzt bisschen fertig. :)

Denn die 52 HTML-Dateien stehen für die Kalenderwochen. Und mein Chef möchte es jeden Tag das Programm aufrufen, und überprüfen, ob sich die Inhalte verändert haben.

Wenn ja, die Kalenderwoche ausdrucken. ich kann nicht alle 52 HTML-Datei nicht jeden tag ausdrucken.

deathbyaclown, du hast recht. Mit StringBuffer.hashCode ist das hash immer gleich. Aber überprüfe ich es mit toString() dann kann man die Änderungen sehen, also es kommt ein anderer Hash-Wert.

An einem HTML-Datei habe ich es überprüft. Ich habe im Inhalt was geändert und überprüft, ob sich das Hash-Wert geändert hat. Das Klappt schon. Und wenn ich wieder den Inhalt im alten Status ändere, dann kommt das selbe Hash-Wert raus. Also es klappt doch irgendwie.

Werde es so lösen und testen.


Für weitere Tips bin ich dankbar.


Bye
 

moormaster

Top Contributor
Sicherlich ändert sich der Hashwert in den meisten Fällen, wenn die Datei geändert wurde. Aber es ist nicht garantiert, dass sich der Hashwert ändert (schon allein weil es viel mehr Varianten gibt, was sich in einer 10kb Datei befinden kann, als es verschiedene Hashwerte gibt).

Es gibt einfach jede Menge sogenannte Kollisionen, wo verschiedene Dateien den selben Hashwert haben.
Gleicher Hashwert impliziert nicht gleichen Dateiinhalt! Nur unterschiedliche Hashcodes bedeuten auf jeden Fall unterschiedliche Dateiinhalte.

Du könntest dir alternativ das Datum merken, wann eine Datei zuletzt aktualisiert werden musste und dann einfach alle Dateien, die neuer als xy sind, ausdrucken.
 
B

bygones

Gast
moormaster hat gesagt.:
Du könntest dir alternativ das Datum merken, wann eine Datei zuletzt aktualisiert werden musste und dann einfach alle Dateien, die neuer als xy sind, ausdrucken.
wende hier deine argumentation an ;-)

geaendertest Datum einer Datei heisst nicht, dass sich die Datei geandert hat....
 

moormaster

Top Contributor
Doch heisst es... ich rede nicht vom Dateidatum :D Also muss ich das wohl doch weiter ausführen:

Also du hast deine ganzen HTML Dateien und irgendwann kommt dein Programm an und stellt fest, dass Datei a und Datei b sich verändert haben und neu geschrieben werden müssen... gleichzeitig vermerkt dein Programm in einer Dateiliste in einer extra Datei, wann Datei a und b neu geschrieben wurden. Somit ist das Dateidatum immer up to date... ausser wenn jemand das Systemdatum verstellt hat, dann müsste man die ganzen Dateidaten zurücksetzen.

Jedenfalls kannst du diese Dateiliste dann dazu nehmen, um zu entscheiden, welche Dateien kürzlich aktualisiert wurden, um nicht alle ausdrucken zu müssen.
 
G

Gast

Gast
52 Dateien zu überprüfen ist ja nicht wirklich eine komplexe aufgabe.

string1 = alteDatei.einlesen();
string2 = zuUeberpruefendeDatei.einlesen();

if(string1.equals(string2))
{
alteDatei = zuUeberpruefendeDatei;
drucken();
}

Zum einlessen() evtl. StringBuffer oder StringBuilder verwenden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Meta Tags vergleichen mit Html Vorgabe Java Basics - Anfänger-Themen 8
A HTML-Code auslesen und mit einem Wert in der property-Datei vergleichen Java Basics - Anfänger-Themen 2
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
S Den Minimumberechnen 2 codes vergleichen Java Basics - Anfänger-Themen 4
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
M Strings vergleichen Java Basics - Anfänger-Themen 10
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
O String mit Character vergleichen Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
R String vergleichen Java Basics - Anfänger-Themen 59
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
A Suffix vergleichen Java Basics - Anfänger-Themen 2
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
PaperHat Objekte in Array vergleichen Java Basics - Anfänger-Themen 9
F Input/Output 2 Textdateien mit einander vergleichen Java Basics - Anfänger-Themen 11
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
M String vergleichen Java Basics - Anfänger-Themen 5
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
S Array, Geburtsdatum, Vergleichen Java Basics - Anfänger-Themen 28
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
L Variablen Versionsnummern vergleichen Java Basics - Anfänger-Themen 5
N Methoden int[]'s vergleichen Java Basics - Anfänger-Themen 4
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
T JPasswordFielder vergleichen Java Basics - Anfänger-Themen 16
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Werte in Liste mit Nachfolger vergleichen Java Basics - Anfänger-Themen 5
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
J Zahlensequenz mit einer anderen Sequenz vergleichen Java Basics - Anfänger-Themen 6
P String größer kleiner gleich vergleichen Java Basics - Anfänger-Themen 6
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
J Methoden BinaryStrings vergleichen Java Basics - Anfänger-Themen 12
C arrey mit string vergleichen Java Basics - Anfänger-Themen 2
K Methoden Passwort Bestätigungsfeld mit Password vergleichen Java Basics - Anfänger-Themen 7
M Wortteile im String vergleichen Java Basics - Anfänger-Themen 2
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
C Große Zahlen vergleichen Java Basics - Anfänger-Themen 19
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
JavaNewbie2.0 String vergleichen Java Basics - Anfänger-Themen 4
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
A Werte innerhalb von resultset vergleichen Java Basics - Anfänger-Themen 2
J Zwei String-Variabeln vergleichen Java Basics - Anfänger-Themen 5
T Java gleichfarbige Pixel vergleichen Java Basics - Anfänger-Themen 5
B Arrayinhalt mit String vergleichen Java Basics - Anfänger-Themen 6
J Objekttypen vergleichen und filtern Java Basics - Anfänger-Themen 6
J 2 Arrays vergleichen (Unterschiedliche Längen) Java Basics - Anfänger-Themen 42
K Textdateien vergleichen optimieren Java Basics - Anfänger-Themen 9
R Zeichen in String vergleichen Java Basics - Anfänger-Themen 75
P Erste Schritte Mehrdimensoniales Array vergleichen Java Basics - Anfänger-Themen 2
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
B ArrayList vergleichen Java Basics - Anfänger-Themen 18
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
OlafHD String in einer If-Anweisung Vergleichen Java Basics - Anfänger-Themen 2
D Variablen Variable char vergleichen Java Basics - Anfänger-Themen 5
F String vergleichen Java Basics - Anfänger-Themen 9
S LinkedList mit Input vergleichen. Java Basics - Anfänger-Themen 5
Shizmo Arrays miteinander vergleichen Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben