2017-02-27 29 views
5

W mojej aplikacji mam klasę manipulowania archiwum zip przy użyciu System.IO.Compression.ZipArchive. Teraz chcę zapisać wpisy archiwum do pliku. Jak mogę to zrobić? Wiem, że mogę skojarzyć Stream z archiwum, ale w moim przypadku archiwum tworzy w/o strumieniach i nie mogę zmienić kod:Zapisz ZipArchive do pliku

var archive = ZipFile.Open(fileName, ZipArchiveMode.Create); 
// add entries 
// how can I save it to file now? 
+1

https://msdn.microsoft.com/en-us/library/hh485720(v=vs.110).aspx – Hackerman

+0

Proszę sprawdzić tę odpowiedź: [stackoverflow] (http://stackoverflow.com/a/12670368/6340841) –

+0

Dzięki chłopaki za odpowiedzi, ale nie to, czego potrzebuję. Jak już powiedziałem, używam 'System.IO.Compression.ZipArchive' i nie mogę go zmienić na inną bibliotekę. – folibis

Odpowiedz

3

Jesteś już „zapisanie go do pliku”, jeden wskazany przez fileName.

Aby upewnić się, wszystko jest napisane i zaczerwieniona, użyj using:

using (var archive = ZipFile.Open(fileName, ZipArchiveMode.Create)) 
{ 
    // add entries 
    .... 

} // here it is saved and closed 
+0

Dzięki, Hener Holterman, masz rację, zauważyłem, że ten kod tworzy plik. Niestety jest pusta, chociaż dodaję kilka elementów 'ZipArchiveEntry'. – folibis

+0

Następnie coś jeszcze jest nie tak, stwórz [mcve]. –

+0

W porządku, znalazłem sposób na zrobienie tego. W moim kodzie nie użyłem 'use', więc wygląda na to, że plik pozostaje otwarty. Dodałem 'archive.Dispose()' w mojej destruktor klasy i teraz działa dobrze, archiwum utworzone zgodnie z oczekiwaniami. – folibis