SharpZipLib Изучите и выберите содержимое файла ZIP - PullRequest
6 голосов
/ 29 ноября 2011

Я использую SharpZipLib в проекте, и мне интересно, можно ли использовать его для просмотра внутри zip-файла, и если в одном из файлов есть данные, измененные в диапазоне, который я ищу, чтобы затем выбрать этот файл и скопировать его в новый каталог? Кто-нибудь знает, что это возможно?

1 Ответ

9 голосов
/ 29 ноября 2011

Да, можно перечислить файлы zip-файла, используя SharpZipLib.Вы также можете выбрать файлы из zip-файла и скопировать эти файлы в каталог на вашем диске.

Вот небольшой пример:

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);
        }*/
      }            
    }
  }
}

В приведенном выше примере я использую MemoryStream для хранения ZipEntry в памяти (для дальнейшего анализа).Вы также можете сохранить ZipEntry (если он соответствует определенным критериям) на диске.

Надеюсь, это поможет.

...