2011-11-29 10 views
6

Używam SharpZipLib w projekcie i zastanawiam się, czy można go wykorzystać do obejrzenia pliku zip, a jeśli jeden z plików ma zmodyfikowane dane w zakresie Poszukuję następnie, aby wybrać ten plik i skopiować go do nowego katalogu? Czy ktoś wie, że to jest możliwe?SharpZipLib Sprawdzanie i wybieranie zawartości pliku ZIP

+0

Jestem pewien, że jest to możliwe. Musiałbyś otworzyć archiwum i przyjrzeć się zawartości zbioru plików. W zależności od tego, czy informacje o ostatniej modyfikacji zostaną upublicznione, ustalą, czy będziesz w stanie zrobić wszystko inne. Nie wiem, dlaczego nie zostanie upubliczniony, biblioteka SharpZibLib opiera się na tym, więc powinna również na to pozwolić. W przeciwnym razie zawsze istnieją inne rozwiązania, które by na to pozwoliły. –

Odpowiedz

8

Tak, możliwe jest wyliczenie plików pliku zip przy użyciu SharpZipLib. Możesz także wybrać pliki z pliku zip i skopiować te pliki do katalogu na dysku.

Oto mały przykład:

using (var fs = new FileStream(@"c:\temp\test.zip", FileMode.Open, FileAccess.Read)) 
{ 
    using (var zf = new ZipFile(fs)) 
    { 
    foreach (ZipEntry ze in zf) 
    { 
     if (ze.IsDirectory) 
     continue; 

     Console.Out.WriteLine(ze.Name);    

     using (Stream s = zf.GetInputStream(ze)) 
     { 
     byte[] buf = new byte[4096]; 
     // Analyze file in memory using MemoryStream. 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      StreamUtils.Copy(s, ms, buf); 
     } 
     // Uncomment the following lines to store the file 
     // on disk. 
     /*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name)) 
     { 
      StreamUtils.Copy(s, fs, buf); 
     }*/ 
     }    
    } 
    } 
} 

W powyższym przykładzie użyć MemoryStream przechowywać ZipEntry pamięci (do dalszej analizy). Można również zapisać na dysku ZipEntry (jeśli spełnia on określone kryteria).

Hope, to pomaga.

+0

To jest dokładnie to, czego szukałem, bardzo doceniane !! – DukeOfMarmalade

Powiązane problemy