ZIP Archiv auf Konsistenz prüfen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Wie kann ich möglichst elegant und peformant ein (evtl. großes) ZIP Archiv auf Konsistenz prüfen ohne es zu entpacken?
 

slawaweis

Bekanntes Mitglied
Hallo,

der Algorithmus wäre so:

1. einen java.util.zip.ZipInputStream öffnen
2. nächstes java.util.zip.ZipEntry lesen
3. eine neue Instanz von java.util.zip.CRC32 anlegen
4. mit ZipInputStream.read(...) Daten in einen Cache (z.b. 100000 Byte) schaufeln
5. den Cache an CRC32.update(...) übergeben
6. wenn man so alle Daten aus dem aktuellem ZipEntry ausgelesen hat, muss man nur noch CRC32.getValue() und ZipEntry.getCrc() miteinander vergleichen. Stimmen die Zahlen überein, ist dieser Eintrag in der Zip-Datei korrekt, wenn nicht, dann ist dieser Eintrag beschädigt.
7. das Ergebnis des Vergleichs entweder ausgeben oder in einer Liste speichern.
8. fahre mit Punkt 2 solange fort, bis kein ZipEntry im ZipInputStream mehr ist.
9. ZipInputStream schließen und Ergebnis für die gesamte Datei erstellen.

Dieses Verfahren hat einen Hacken. Die CRC32 Angabe in der Zip-Datei ist optional. Wenn diese Angabe also in der Zip-Datei fehlt oder falsch ist, lässt sich die Konsistenz nicht bestätigen, auch wenn die Einträge vielleicht korrekt sind. Bei fehlender Angabe liefert ZipEntry.getCrc() -1L zurück. Weiterhin sollte java.util.zip.Adler32 das selbe wie java.util.zip.CRC32 machen, nur schneller, aber ich habe es nie ausprobiert.

Slawa
 
G

Guest

Gast
Danke für die ausführliche Beschreibung.

Leider muss die Konsistenz immer sichergestellt sein, ich habe keinen Einfluss darauf, ob die Prüfsumme vorhanden ist oder nicht. Unter der Annahme, dass entweder alle Entries einen Prüfsumme haben oder keiner, kann ich immerhin die Prüfsummenvariante benutzen wenn möglich. Lediglich im andern Fall muss ich die Datei dann mal entpacken.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
J PDF-Datei aus JAR-Archiv in Dateisystem kopieren Allgemeine Java-Themen 1
Seikuassi Input/Output ZipOutputStream erzeugt zu großes .zip-Archiv Allgemeine Java-Themen 3
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
C jar Archiv im Programm aus dessen jar extrahieren Allgemeine Java-Themen 2
H JAVA-ARCHIV-PROBLEME - pls help :( Allgemeine Java-Themen 4
D auf Bilder im Jar-Archiv zugreifen Allgemeine Java-Themen 11
T jar Archiv auf Server ausführen Allgemeine Java-Themen 3
J Ordner im Archiv (jar) auslesen Allgemeine Java-Themen 12
trash Das große Problem: .jar Archiv Allgemeine Java-Themen 19
multiholle Resourcen aus Jar-Archiv laden Allgemeine Java-Themen 5
D verschlüsseltes Archiv erstellen Allgemeine Java-Themen 5
Balbes Auf Datei im Dateisystem aus einem jar-Archiv zugreifen Allgemeine Java-Themen 4
B Jar-Archiv Allgemeine Java-Themen 3
B Film aus Java JAR-Archiv extrahieren Allgemeine Java-Themen 4
A Warum hab ich noch nie ein .jar Archiv gesehen? Allgemeine Java-Themen 5
X Klasse aus Jar Archiv laden Allgemeine Java-Themen 3
V Wie kann ich ein Bild in einem Zip Archiv abspeichern? Allgemeine Java-Themen 3
K Zugriff auf eine Datei in einem jar-Archiv Allgemeine Java-Themen 9
G IOExceptions nur bei jar Archiv Allgemeine Java-Themen 4
N Speichern von binären Dateien (Zip-Archiv) per Stream? Allgemeine Java-Themen 6
J Javabibliotheken in Jar- Archiv einbinden Allgemeine Java-Themen 5
G Testdatei im Jar archiv öffnen und reinschreiben Allgemeine Java-Themen 11
M dateien in einer zip datei hinzufügen - Archiv updaten Allgemeine Java-Themen 11
G jar archiv und native klassen (pfad angabe) Allgemeine Java-Themen 2
T jar - Archiv updaten Allgemeine Java-Themen 2
T Klassen samt Methoden aus Jar-Archiv laden macht Problem Allgemeine Java-Themen 9
E Konvertierungen und JAR-Archiv Allgemeine Java-Themen 4
Luma Zip-Archiv auslesen und Entry-Informationen auslesen Allgemeine Java-Themen 3
D Jar-Archiv FAQ - Manifest.... Allgemeine Java-Themen 3
J Problem mit *.jar Archiv Allgemeine Java-Themen 5
J Icon für Jar-Archiv Allgemeine Java-Themen 2
J Problem mit .jar Archiv und Bilder Allgemeine Java-Themen 6
bummerland bilder im jar-archiv? Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
W Classpath Reflexion - Prüfen ob man auf ein Feld ändern kann Allgemeine Java-Themen 2
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
J Mit Lombok Integer Range prüfen Allgemeine Java-Themen 6
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
E Programm auf Installation prüfen Allgemeine Java-Themen 1
S Binärbaum prüfen Allgemeine Java-Themen 0
L String auf zahlenwert prüfen Allgemeine Java-Themen 13
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
M .jar nach Datei prüfen Allgemeine Java-Themen 2
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
O Prüfen ob String eine Zahl mit maximal 2 Nachkommastellen ist Allgemeine Java-Themen 4
M datei aufruf prüfen Allgemeine Java-Themen 9
D Best Practice Prüfen ob jar nachträglich geändert wurde Allgemeine Java-Themen 2
B Dateien prüfen auf Gleichheit Allgemeine Java-Themen 5
H String auf Zahlen prüfen Allgemeine Java-Themen 4
T auf Valides Datum prüfen Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
O Variablen Originalname einer übergebenen Variable prüfen Allgemeine Java-Themen 9
T Methoden Zahlenpalindrom laufzeitoptimiert prüfen Allgemeine Java-Themen 4
U ResourceBundles auf vollständigkeit prüfen Allgemeine Java-Themen 2
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
E Prüfen ob Fenster mit Namen offen ist Allgemeine Java-Themen 2
M Binärbaum auf vollständigkeit prüfen Allgemeine Java-Themen 4
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
N List auf null prüfen Allgemeine Java-Themen 2
B generischen Typ prüfen Allgemeine Java-Themen 7
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
N Prüfen ob Methode ausgeführt wird und diese ggf. abbrechen? Allgemeine Java-Themen 8
B Prüfen ob ein Programm gestartet wurde Allgemeine Java-Themen 23
N ArrayList nach Reihenfolge prüfen Allgemeine Java-Themen 2
C Prüfen auf Zahl und 6 stellig fehlerhaft? warum? Allgemeine Java-Themen 7
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Prüfen auf Hex-Wert fester Länge! Allgemeine Java-Themen 5
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K Zip dateien prüfen Allgemeine Java-Themen 3
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
P Sound Buffer prüfen Allgemeine Java-Themen 12
B PrintService - Wie prüfen ob Drucker online ist? Allgemeine Java-Themen 2
A Textfeld prüfen, ob ein Punkt eingegeben wurde Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben