推荐一个库/ API来解压缩C#中的文件

Geo*_*ge2 48 .net c# zip

看起来在C#中没有内置的Library/API来解压缩zip文件.我正在寻找一个免费的(更好的开源)库/ API,它可以与.Net 3.5 + VSTS 2008 + C#一起解压zip文件并将所有文件解压缩到一个特定的文件夹中.

任何推荐的库/ API或样品?

Sam*_*ron 34

GPL

http://www.icsharpcode.net/OpenSource/SharpZipLib/

或限制较少的Ms-PL

http://www.codeplex.com/DotNetZip

为了完成这个答案,.net框架有了ZipPackage,我用它做得不太成功.

  • 在大多数情况下,DotNetZip使用SharpZipLib要简单得多. (6认同)
  • 没错,但如果您需要tar库,请使用tar库.格式比zip简单得多..NET有一个单文件tar库:http://stackoverflow.com/questions/391936/what-is-a-good-commercial-tar-stream-lib-for-c-and-net/2060251#2060251 (3认同)

Sim*_*zie 24

如果您只想将文件内容解压缩到一个文件夹,并且您知道只能在Windows上运行,则可以使用Windows Shell对象.我dynamic在本例中使用了Framework 4.0,但您可以使用相同的结果Type.InvokeMember.

dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));

dynamic compressedFolderContents = shellApplication.NameSpace(sourceFile).Items;
dynamic destinationFolder = shellApplication.NameSpace(destinationPath);

destinationFolder.CopyHere(compressedFolderContents);
Run Code Online (Sandbox Code Playgroud)

您可以使用FILEOP_FLAGS来控制CopyHere方法的行为.


Che*_*eso 17

DotNetZip易于使用.这是一个解压缩样本

using (var zip = Ionic.Zip.ZipFile.Read("archive.zip"))
{
   zip.ExtractAll("unpack-directory");
}
Run Code Online (Sandbox Code Playgroud)

如果您有更复杂的需求,例如您想要选择要提取的条目,或者是否有密码,或者您想要控制提取的文件的路径名,等等,那么有很多选项. 有关更多示例,请查看帮助文件.

DotNetZip是免费的开源软件.


Max*_*sky 10

在过去,我使用过DotNetZip(MS-PL),SharpZipLib(GPL)和用于C#7ZIP SDK(公共域).它们都很好用,而且是开源的.

在这种情况下我会选择DotNetZip,这里是C#Examples页面的一些示例代码:

using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
  foreach (ZipEntry e in zip)
  {
    e.Extract(TargetDirectory);
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

看看我的小型图书馆:https : //github.com/jaime-olivares/zipstorer