8

私はプロジェクトで SharpZipLib を使用していますが、それを使用して zip ファイル内を調べることができるかどうか疑問に思っています。その中のファイルの 1 つに、検索している範囲で変更されたデータがある場合は、そのファイルを選択してコピーしますそれを新しいディレクトリに?これが可能であることを知っている人はいますか?

4

1 に答える 1

13

はい、SharpZipLib を使用して zip ファイルのファイルを列挙することは可能です。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(特定の基準を満たしている場合) をディスクに保存することもできます。

お役に立てれば。

于 2011-11-29T19:17:50.883 に答える