Dateiinhalt zweier Dateien auf Gleichheit prüfen

C

clattulipoz

Gast
Hallo,

ich wollte in einfaches Programm schreiben, das prüfen soll, ob zwei Dateien gleich sind. Hierbei müssen alle Bytes gelesen werden.

Java:
    public static void main(String[] args) throws FileNotFoundException, IOException {

        JFileChooser jfc = new JFileChooser();
        File f1;
        File f2;
        if (jfc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
            return;
        }
        f1 = jfc.getSelectedFile();
        if (jfc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
            return;
        }
        f2 = jfc.getSelectedFile();

        BufferedInputStream bis1 = null;
        BufferedInputStream bis2 = null;
        try {
            bis1 = new BufferedInputStream(new FileInputStream(f1));
            bis2 = new BufferedInputStream(new FileInputStream(f2));
            int c = 0;
            int i1 = 0;
            int i2 = 0;
            do {
                c++;
                i1 = bis1.read();
                i2 = bis2.read();
                if (i1 != i2) {
                    System.out.println("UNgleich");
                    System.out.println("byte number: " + c);
                    System.out.println(Integer.toBinaryString(i1));
                    System.out.println(Integer.toBinaryString(i2));
                    return;
                }
            } while (i1 != -1 && i2 != -1);
            System.out.println("gleich");
            System.out.println("byte number: " + c);
            System.out.println(Integer.toBinaryString(i1));
            System.out.println(Integer.toBinaryString(i2));
        } finally {
            if (bis1 != null) {
                bis1.close();
            }
            if (bis2 != null) {
                bis2.close();
            }
        }

    }

Jetzt zu meiner Frage, wo könnte es Probleme geben, dann wenn dieselbe Datei zweimal gewählt wird? Werden die Dateiströme immer geschlossen, und wie sollte die Puffergröße gewählt werden, damit das Programm optimal ist?

Danke
 

FArt

Top Contributor
Bzgl Problemen beim Verarbeiten einer Datei und der richtigen Wahl der Puffergröße: ausprobieren und versuchen selber eine Antwort zu findne.
Werden die Streams immer geschlossen? Ja. Werden Fehler ignoriert oder maskiert? Ja.
 
C

clattulipoz

Gast
Fehler werden ungefiltert weitergeben, was für ein Programm dieser Größe sinnvoll ist. Das Ausprobieren mit beliebig gewählter Puffergröße hilft mir nicht weiter. Den Rumpf der "do-while"-Schleife lässt sich auch verkürzen, sodass mit anschließender Überprüfung, ob zuletzt gelesene Bytes gleich sind, eine Aussage gemacht werden kann. Das Programm ist dann aber evtl. zu unübersichtlich:

Java:
            int c = 0;
            int i1 = 0;
            int i2 = 0;
            while ((c = c++) == c && (i1 = bis1.read()) == (i2 = bis2.read()) && i1 != -1);
            // c: nr des zuletzt gelesenen bytes
            // läuft solange, gelesene bytes gleich sind
            // und dateiströme nicht zuende
            if (i1 == i2) {
                System.out.println("gleich");
            } else {
                System.out.println("UNgleich");
            }
 

FArt

Top Contributor
Fehler werden ungefiltert weitergeben, was für ein Programm dieser Größe sinnvoll ist. Das Ausprobieren mit beliebig gewählter Puffergröße hilft mir nicht weiter.
Ja, Exceptions weiterwerfen ist hier wohl sinnvoll. Die Puffergröße hat Einfluß auf die Performance. Eine entsprechende Diskussion über Optimierung läuft hier gerade... *G*

Mein Tipp: lass es wie es ist. Du wertest eh byteweise aus, da wird sich die Puffergröße nicht sonderlich bemerkbar machen. Wenn ja, dann kannst du immer noch eine Anpassung durchführen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Dateiinhalt wird nicht in String eingelesen Java Basics - Anfänger-Themen 4
U Ausgabe von Dateiinhalt während Programmnutzung fehlerhaft Java Basics - Anfänger-Themen 3
N Dateiinhalt zu jTextArea hinzufügen Java Basics - Anfänger-Themen 2
StrikeTom JTextArea mit txt-dateiinhalt füllen Java Basics - Anfänger-Themen 11
M Dateiinhalt unleserlich machen Java Basics - Anfänger-Themen 3
U Dateiinhalt löschen Java Basics - Anfänger-Themen 8
C Byte-Array mit Dateiinhalt füllen Java Basics - Anfänger-Themen 7
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
C Proportionale Abnahme zweier Werte Java Basics - Anfänger-Themen 4
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
C Inhalte zweier Vektoren vergleichen Java Basics - Anfänger-Themen 3
T Programm, das die Differenz zweier Daten ausgibt Java Basics - Anfänger-Themen 4
S Ermittlung des GGTs zweier Werte Java Basics - Anfänger-Themen 5
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
A Durchschnitt zweier Mengen berechnen Java Basics - Anfänger-Themen 3
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
K Schnitt zweier Ebenen ergibt Gerade Java Basics - Anfänger-Themen 10
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
J Dimensionen zweier Arrays vergleichen Java Basics - Anfänger-Themen 4
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
turmaline Gleicheit zweier Listen Java Basics - Anfänger-Themen 12
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
W Unterschiede zweier Dateien herauslesen Java Basics - Anfänger-Themen 7
P Unterschiede zweier System.in Varianten Java Basics - Anfänger-Themen 3
I Abhängigkeiten zweier Klassen Java Basics - Anfänger-Themen 25
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
D Eine Nachkommazahl zweier Double vergleichen Java Basics - Anfänger-Themen 4
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
S Addieren zweier Arrays Java Basics - Anfänger-Themen 10
T ermittlung des minimus zweier eingegebener werte Java Basics - Anfänger-Themen 7
G größere zweier zahlen ermitteln und ausgeben Java Basics - Anfänger-Themen 6
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
A Schnitt zweier Rechtecke ermitteln Java Basics - Anfänger-Themen 2
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
T Inhalte zweier Variablen tauschen Java Basics - Anfänger-Themen 18
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
N Den Inhalt zweier Strings (Zahlen) addieren Java Basics - Anfänger-Themen 5
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
I Dateien aus dem Resource Folder laden Java Basics - Anfänger-Themen 2
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
A Zwei XML-Dateien Mergen Java Basics - Anfänger-Themen 14
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
LetsSebi Dateien werden nicht in Zip gespeichert Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
S Lese- / Schreibfähigkeit von Dateien sicherstellen Java Basics - Anfänger-Themen 1
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
A Dateien Verschieben Java Basics - Anfänger-Themen 1
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46

Ähnliche Java Themen

Neue Themen


Oben