c# sharpziplib hinzufügen Datei in bestehendes Archiv
versuche zum hinzufügen von Dateien zu einem vorhandenen Archiv mit dem folgenden code. Bei der Ausführung keine Fehler oder Ausnahmen werden angezeigt, aber keine Dateien Hinzugefügt werden, um das Archiv entweder. Irgendwelche Ideen, warum?
using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
{
zipToWrite.SetLevel(9);
using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
{
byte[] byteBuffer = new byte[newFileStream.Length - 1];
newFileStream.Read(byteBuffer, 0, byteBuffer.Length);
ZipEntry entry = new ZipEntry(sourceFiles[0]);
zipToWrite.PutNextEntry(entry);
zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
zipToWrite.CloseEntry();
zipToWrite.Close();
zipToWrite.Finish();
}
}
- Ich aktualisiert meine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In DotNetZip, hinzufügen von Dateien zu einem bestehenden zip ist wirklich einfach und zuverlässig.
Wenn Sie möchten, geben Sie einen Pfad für die neue Datei, dann verwenden Sie eine andere überladung für AddFile().
Wenn Sie möchten, fügen Sie eine Reihe von Dateien, verwenden Sie "AddFiles" ().
Brauchen Sie nicht zu befürchten, Close(), CloseEntry(), CommitUpdate(), Beenden() oder das andere Zeug.
Vom Codeproject benutzt jemand diesen code. Nur der Unterschied ist, schließen und beenden otherway herum und das schreiben Teil:
BTW:
Dies ist falsch, die Größe ist newFileStream.Länge sonst das Lesen schief geht.
Sie haben ein array, und Sie machen es zum Beispiel 10-1 ist 9 Byte lang, von 0 bis 8.
Aber die Lektüre von 0 bis 9...
Ich denke, dass Ihr
Finish
nennen sollte vor IhreClose
nennen.Update: Das sieht aus wie ein bekannte Fehler. Es ist möglich, kann es schon behoben wurden - Sie müssen überprüfen Sie Ihre SharpZipLib version zu sehen, ob es umfasst alle Updates. Wenn nicht, können Sie es umgehen, kopieren Sie alle Dateien zu einem neuen Archiv hinzufügen der neuen Datei, dann bewegen Sie das neue Archiv zu den alten Archiv-Namen.
gibt es einen Ordner ZippedFolder im Website-root-Verzeichnis , im inneren haben wir ein Archiv MyZipFiles.
Gibt es einen Ordner mit dem Namen siteImages die darin besteht, alle Bild-Dateien.
Der folgende code ist der code, um zip die Bilder
wenn wir verschiedene Datei-Formate, und wir möchten, dass Ihre Dateien werden gespeichert in jeweiligen Ordner,können Sie den code wie folgt.
nun das Archiv enthält zwei Ordner
Bilder ---- > img1.jpg , img2,.jpg
und einen anderen Ordner
Dateien --> Kunden.pdf, sample.doc
Den
ZipOutputStream
Klasse nicht aktualisieren Sie vorhandene ZIP-Dateien. Verwenden Sie dieZipFile
Klasse statt.Ich fand eine einfache Lösung dafür, dass es zu ZipFile und ZipEntry nur