2010-12-15 4 views
4

Ich verwende Sharpziplib version 0.86, um eine Zip-Datei zu extrahieren. Es funktioniert gut, aber während einer Winzip Datei über Code zu extrahieren, in Sekunden Lastwritetime verändert ...LastWritetime ändert sich beim Extrahieren einer ZIP-Datei in C#?

auch verwendet haben diese File.SetLastWriteTime(fullPath, theEntry.DateTime);

tatsächliche Datei Lastwritetime: 4/8/2010 2:29:03PM Nachdem die Datei zippen Winzip und beim Extrahieren, dass Datei mit dem Code, extrahierte Datei Die letzte Schreibzeit ändert sich in 4/8/2010 2:29:04PM ... Gibt es eine Lösung dafür ???

+0

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Meinst du beim Entpacken des Inhalts einer Zip-Datei mit Sharpziplib ändert sich die LastWriteTime der Zip-Datei und mit WinZip ändert sich nur einmal auf eine Sekunde letztere? –

+0

@SoMoS: Nicht mit winzip ... durch code ... Es gibt eine Änderung in Sekunden ... für diese Datei 1 Sekunde ... für andere Dateien 2 oder 3 Sekunden Unterschied gibt es – bala3569

+0

Nur aus einem anderen Blickwinkel ; Sind Sie sicher, dass die Extrahierung falsche Zeitstempel für extrahierte Dateien erstellt oder wenn die ursprüngliche Ansicht (in zipfile, vor dem Entpacken) falsche Zeitstempel enthält? Ich bin mir nicht sicher, wie Zip seine Zeitstempel gespeichert hat, aber ich vermute, dass es "Sekunden seit 1-1-70" ist. Einer der beiden scheint das anders zu berechnen. –

Antwort

2

bekam ich diese Antwort von SharpZipLib Forum

Hallo

Dies scheint ein WinZip Bug zu sein. Das habe ich vorher nicht bemerkt.

Ich habe diesen Test:

1) Verwenden Sie WinZip eine Datei in eine zip hinzuzufügen. Klicken Sie in WinZip auf Eigenschaften und Details. Sehen Sie sich die Detailliste an und finden Sie den Zeitstempel der Datei.

2) Verwenden Sie SharpZipLib, um eine ähnliche Zip-Datei mit derselben Eingabedatei zu erstellen. Öffnen Sie das Ergebnis in Winzip und sehen Sie unter Eigenschaften> Details nach dem Zeitstempel der Datei.

Meine Eingabedatei hat einen Modified Timestamp (Dateieigenschaften) 2010-12-14 15:51:28 und in meinem Test speicherte SharpZipLib es korrekt in der Zip, während WinZip es als 2010-12-14 15 gespeichert : 51: 30

Mit anderen Worten fügte WinZip 2 Sekunden hinzu, wenn es in den Reißverschluss setzte. Nach dem Extrahieren (entweder mit WinZip oder SharpZip) ist das Modified nun 15:51:30 statt des Originals 15:51:28.

es ist erstaunlich, dass so ein offensichtlicher Fehler in WinZip kann nicht gemeldet und so lange unfixiert. Wenn Sie eine kostenpflichtige Version haben, sollten Sie mit Sicherheit einen Bugfehler melden.

Ich erinnerte mich nur etwas über 2 Sekunden Granularität in den alten 8.3 Dateisystem-Zeitstempeln.

Schnell google fand dieses ...

Zitat „Original DOS-Dateisystem nur 32 Bytes hatte eine Datei im Verzeichnis dar. Die sehr restriktiven 8.3-Dateinamen und die begrenzte Granularität (2 Sekunden) in Dateidatum sind in den Win32-Dateisystemen (VFAT) korrigiert." von http://www.xxcopy.com/xxcopy15.htm

Das Zip-Format erlaubt nur 2 Sekunden Granularität in dem Standard-Zeitstempel Eintrag Datum und Uhrzeit werden in Standard-MS-DOS-Format codiert.

Ein optionales NTFS Zusatzdatenfeld (0x000A) kann eingeschlossen werden, die die letzte Änderungszeit, die letzte Zugriffszeit und die Erstellungszeit enthalten können WinZip scheint es nicht zu erstellen SharpZip wird es verwenden wenn es vorhanden ist, aber soweit ich sehen kann, wird es nicht erstellt, wenn FastZip zum Erstellen einer Zip verwendet wird Dies könnte eine nützliche Option sein, um den Code hinzuzufügen.Sie können sicherlich manuell erstellen, wenn Sie ZipFile verwenden.

Hope this hilft, David

+0

anwser kandupidichitta pola .. große la ... –

+0

klingt wie Sie haben die kombinierte Wirkung von 2 verschiedenen Problemen beobachtet: Der Fehler WinZip und die 2-Sekunden-Genauigkeit mit ZIP-Dateien verbunden. – Cheeso

2

Ich denke, es könnte nur das Betriebssystem sein, das dies verursacht. Ich habe versucht, was im Explorer passiert. Ich habe eine Textdatei mit einem modifizierten Zeitstempel von 17:06:45. Ich klicke mit der rechten Maustaste auf die Datei und wähle Senden an | Komprimierter (gezippter) Ordner. Dann klicke ich mit der rechten Maustaste auf die neue Zip-Datei und wähle Extract All ... gefolgt von Next, Next, Finish. Jetzt hat die extrahierte Textdatei einen Zeitstempel von 17:06:46.

Das gleiche passiert, wenn ich 7-Zip oder WinRar verwende. Aber nur dann, wenn Sie eine .zip-Datei verwenden. Wenn ich sie eine .7Z- oder eine .RAR-Datei erstellen lasse, wird der Zeitstempel nicht geändert.

Gefunden an article on Wikipedia über das zip-Format. Wenn Sie nach "Sekunden" suchen, finden Sie einen Abschnitt, der beschreibt, dass das ZIP-Dateisystem das DOS-FAT-Dateisystem nachahmt, das nur eine Zeitauflösung von zwei Sekunden hat.

+0

Sieh dir meine Antwort an ... habe diese von shartziplib Forum – bala3569

+0

Es ist nicht das Betriebssystem. Das Zip-Format speichert die Zeiten standardmäßig auf eine Genauigkeit von 2 Sekunden, so dass es zu einem Problem mit einer Abweichung von einer Sekunde kommen kann. Aber nicht um zwei oder drei Sekunden. Zip-Tools können höhere Auflösungszeiten speichern, und es gibt Standardmethoden, um dies zu erreichen, aber nicht alle Tools nutzen die Gelegenheit. – Cheeso

+0

@Cheeso: Ich weiß das, deshalb referenziere ich den Wikipedia-Artikel, der die Tatsache beschreibt, dass das ZIP-Dateisystem das DOS-FAT-Dateisystem nachahmt, das diese 2-Sekunden-Genauigkeit hat. – comecme