2011-11-29 16 views
6

私はプロジェクトでSharpZipLibを使用していますが、これを使ってzipファイルを見ることができ、そのファイル内のファイルの1つが範囲私はそのファイルを取り出して新しいディレクトリにコピーすることを探していますか?誰でもこのことが可能であることを知っていますか?SharpZipLib ZIPファイルの内容を調べて選択します

+0

確かに可能です。アーカイブを開いて、ファイルのコレクションの内容を確認する必要があります。最後の変更情報が公開されたかどうかによって、他のすべてのことができるかどうかが決まります。私はそれが公開されない理由はありません、図書館SharpZibLibはそれに基づいているので、それも許可する必要があります。さもなければ、それを可能にする他の解決策が常にある。 –

答えて

8

はい、SharpZipLibを使用してzipファイルのファイルを列挙することは可能です。 zipファイルからファイルを選択し、それらのファイルをディスク上のディレクトリにコピーすることもできます。私は(さらなる分析のために)メモリにZipEntryを格納するMemoryStreamを使用する上記の例で

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

:ここ

が小さい例です。ディスクに特定の基準を満たす場合はZipEntryを保存することもできます。

希望、これは役立ちます。

+0

これはまさに私が探していたものであり、非常に感謝しています! – DukeOfMarmalade

関連する問題