9

フォルダーが"D:\folder"あり、このフォルダーには、新しいアーカイブに圧縮する必要がある 10 個のファイルがあります"D:\folder.zip"

現在、私はICSharpCode.SharpZipLibを使用していますが、これは必須要件ではないため、他のソリューションを使用できます。

私が直面している問題は、メソッドを実行しようとするFileStream fs = File.OpenRead(@"D:\folder")と、指定されたパスへのアクセスが原因でエラーが発生することです。

これらのファイルを簡単な方法で圧縮するにはどうすればよいですか?

4

2 に答える 2

24

DotNetZipは SharpZipLib よりもはるかに使いやすく、フォルダー内のすべてのファイルを圧縮する例:

  using (ZipFile zip = new ZipFile())
  {
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX");
    zip.Save(zipFileToCreate);
  }

これは、このページの例です:

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=例

于 2012-05-17T21:11:37.613 に答える
19

また、SharpZipLibの代わりにDotNetZipを使用するというAntonioBakulaの提案にも同意します。

.NET 4.5には、.zipファイルを操作するための新しいクラスZipArchiveとクラスが含まれています。ZipFileこのサポートにより、あなたがやろうとしていることは次のように達成されます。

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip");

ちなみに、エラーが発生する理由は、ファイルではなくディレクトリを開こうとしているためです。はFile.OpenRead、読み取り用にファイルを開くために使用されます。ディレクトリを指定すると、エラーが発生します。特定のフォルダ内のファイルまたはディレクトリを列挙する場合は、代わりにDirectory.EnumerateFilesまたはを使用できますDirectory.EnumerateDirectories

于 2012-05-17T21:20:15.340 に答える