Java: Wie überprüft man, ob 2 Binärdateien gleich sind?

8

Was ist der einfachste Weg (in einem Unit-Test) zu prüfen, ob die Binärdateien A und B gleich sind?

    
DP_ 02.04.2014, 17:20
quelle

6 Antworten

9

Sind Bibliotheken von Drittanbietern faires Spiel? Guava hat Files.equal(File, File) . Es gibt keinen wirklichen Grund, sich mit Hashing zu beschäftigen, wenn Sie es nicht müssen; es kann nur weniger effizient sein.

    
Louis Wasserman 02.04.2014, 18:34
quelle
4

Es wird immer nur Byte für Byte von jeder Datei gelesen und verglichen. Md5 und Sha1 usw. müssen immer noch alle Bytes lesen, so dass die Berechnung des Hashes zusätzliche Arbeit ist, die Sie nicht tun müssen.

%Vor%     
dkatzel 02.04.2014 17:54
quelle
2

Mit assertBinaryEquals.

public static void assertBinaryEquals(java.io.File expected, java.io.File actual)

Ссылка

    
almanegra 02.04.2014 18:47
quelle
2

Lies die Dateien in (kleinen) Blöcken und vergleiche sie:

%Vor%     
Binkan Salaryman 22.05.2015 07:24
quelle
0

Ich musste das gleiche auch in einem Unit-Test machen, also habe ich SHA1-Hashes verwendet, um die Berechnung der Hashes zu vermeiden. Ich überprüfe, ob die Dateigrößen gleich sind. Hier war mein Versuch:

%Vor%     
A4L 02.04.2014 17:33
quelle
0

Wenn Sie Abhängigkeiten vermeiden möchten, können Sie dies sehr gut mit Files.readAllBytes und Assert.assertArrayEquals

tun %Vor%

Hinweis: Dadurch wird die gesamte Datei gelesen, sodass sie bei großen Dateien möglicherweise nicht effizient ist.

    
James Mudd 23.08.2017 14:53
quelle

Tags und Links