Warum entpackt 7-zip / WinRAR Dateien auf "temp", bevor sie an ihren Zielort verschoben werden?
Ich sehe keinen Vorteil gegenüber dem direkten Entpacken zum Ziel. Es ist wirklich irritierend, besonders bei großen Dateien (wie es jetzt ist!).
Bearbeiten:
Bitte erklären , warum sie nicht fertig sind , an Ort und Stelle .
Antworten:
Wie genau extrahieren Sie die Dateien? Verwenden Sie die Befehlszeile oder die GUI? Ziehen Sie die Dateien oder wählen Sie sie aus und verwenden Sie die Extraktionsfunktion? Verwenden Sie das Kontextmenü der Shell-Erweiterung?
Wenn Sie einen Zielordner eingeben und dann die Extraktionsfunktion auswählen oder die Shell-Erweiterung verwenden, werden diese zuerst nicht in einen temporären Ordner extrahiert, sondern direkt in den Zielordner.
Wenn Sie die Dateien in der Benutzeroberfläche und wählen Sie ziehen sie in den Zielordner, dann wird in einen temporären Ordner extrahieren.
Der Grund liegt in der Auswahl des Ziels. Wenn Sie den Zielordner eingeben oder den Kontextmenüpunkt verwenden, weiß das Programm genau, wohin es extrahieren muss. Wenn Sie jedoch nur die Dateien ziehen, weiß das Programm aufgrund der Drag & Drop-Funktion von OLE nicht, wo sich der Zielordner befindet. Mit anderen Worten, es ist ExplorerDas empfängt den Zielordner, nicht das Archivierungsprogramm. Infolgedessen kann das Programm nicht wissen, wo sie extrahiert werden sollen, und extrahiert sie einfach in den temporären Ordner. Anschließend werden sie vom Explorer verschoben. Sie können dies deutlich sehen, indem Sie eine große Datei mit beiden Methoden extrahieren. Wenn Sie es in einen Ordner ziehen, wird es extrahiert. Anschließend wird das Standarddialogfeld für Dateivorgänge von Explorer angezeigt, in dem es in den Ordner verschoben wird. Wenn Sie den Ordner angeben und auf Extrahieren klicken, wird er extrahiert und keine weitere Verarbeitung durchgeführt.
Lesen Sie den Quellcode für 7-Zip, um zu sehen, wie mit dem Extraktionsort umgegangen wird.
Das habe ich vor einigen Jahren auf die harte Tour gelernt, als ich Drag-and-Drop in einem Programm implementieren wollte, das ich gerade schrieb.
quelle
Dadurch wird der Speicherbedarf für die Dekomprimierung auf ein Minimum beschränkt.
Wenn sie das Dateisystem nicht verwenden, würde die Dekomprimierung im Speicher erfolgen. Unter Bedingungen mit geringem Arbeitsspeicher oder bei großen komprimierten Dateien würde dies früher oder später den verfügbaren Arbeitsspeicher ausschöpfen und den Prozess des Auslagerns des Arbeitsspeichers starten.
Unter diesen Umständen wäre das Paging viel langsamer als die Verwendung des Dateisystems, da die Datei noch dekomprimiert wird (und Auslagerungsdateien weiterhin hinzugefügt werden), aber auch, weil die Datei beim Dekomprimieren auf Fehler überprüft wird und als solche vorhanden ist viele Lese- / Schreibvorgänge. Das Schlimmste, was einer Auslagerungsdatei passieren kann.
BEARBEITEN: In Bezug auf die Verwendung eines temporären Verzeichnisses wird dies so gehandhabt, dass viele Betriebssystemrichtlinien befolgt werden. Wenn die Dekomprimierung fehlschlägt, gibt es keine Garantie dafür, dass das Programm, das die Operation ausführt, nach sich selbst bereinigt. Es könnte zum Beispiel abgestürzt sein. Als solches verbleibt keine Restdatei in Ihrem Zielverzeichnis und das Betriebssystem wird die temporäre Datei entsorgen, wenn es dies für angemessen hält.
quelle
Der Grund ist einfacher als Sie denken: Viele Programme entpacken Dateien nach% temp%, weil das Zieldateisystem möglicherweise nicht über genügend Speicherplatz verfügt.
Jetzt wissen Sie möglicherweise , dass Ihr Dateisystem möglicherweise über genügend Speicherplatz verfügt, die Anwendung jedoch nicht. Was ist, wenn dieses Dateisystem vom Betriebssystem oder einer anderen Anwendung verwendet wird und beim Dekomprimieren voll wird?
Entwickler gehen davon aus, dass% temp% über "unbegrenzten" Speicherplatz verfügt, Ihr Ziel jedoch nicht.
quelle
Da ich kein 7-zip- oder WinRAR-Entwickler bin, sind meine Kommentare hier reine Spekulationen. Wenn Sie den temporären Speicherplatz zum Entpacken verwenden, bis alles vollständig ist, können Sie sicherstellen, dass alle Dateien intakt sind (dh, dass die Zip-Datei nicht beschädigt ist).
Es gibt nichts Schlimmeres, als eine große komprimierte Datei zu entpacken, die zu Beginn des Archivs mit der Arbeit an Dateien begonnen hat. nur um herauszufinden, dass etwas am Ende des Archivs beschädigt ist. An diesem Punkt verliert man das Vertrauen in alles.
Mein letzter Kommentar ist, dass ich mich nicht erinnern kann, dieses Verhalten von 7-zip aus gesehen zu haben. Wenn ich mit der rechten Maustaste darauf klicke und hier "Extrahieren" sage, habe ich im Allgemeinen Zugriff auf die Dateien, während sie entpackt werden. Haben Sie überprüft, dass es sich nicht um eine Einstellung handelt?
quelle