如何使用.NET创建7-Zip压缩文件?

117

我该如何从我的C#控制台应用程序中创建7-Zip档案? 我需要能够使用常规的、广泛可用的7-Zip程序提取这些归档文件。


以下是根据此问题提供的示例对我的结果进行的分析

  • “运行”7z.exe - 这是最简单、最有效的方法,我可以确认它的工作效果不错。正如workmad3所提到的,我只需要确保在所有目标计算机上安装了7z.exe,这是我可以保证的。
  • 7Zip内存压缩 - 这是指在将cookie发送到客户端之前,在内存中压缩它们的方法; 这种方法似乎有些有希望。包装器方法(包装LZMA SDK)返回类型为byte[]。当我将byte[]数组写入文件时,我无法使用7-Zip解压缩它(File.7z不是支持的归档文件)。
  • 7zSharp包装器(在CodePlex上找到) - 这个包装器包装了7z exe / LZMA SDK。我从我的应用程序引用了该项目,并成功创建了一些归档文件,但我无法使用常规的7-Zip程序提取文件(File.7z不是支持的归档文件)。
  • 7Zip SDK即LZMA SDK - 我猜想我不够聪明,无法理解如何使用它(这就是我在这里发布的原因)... 有没有任何可行的代码示例可以演示如何创建一个能够被常规7zip程序解压缩的7zip归档文件呢?
  • CodeProject C# (.NET) Interface for 7-Zip Archive DLLs - 只支持从7zip归档文件中提取... 我需要创建它们!
  • SharpZipLib - 根据他们的FAQ,SharpZipLib不支持7zip。

  • 37
    请仅翻译文本内容,不要写出“这是从我的帖子中找到的链接,而不是谷歌翻译”的字样。这样做并不尊重那些花时间为您寻找解决方案的人们。 - Patrick Desjardins
    3
    我知道这篇帖子有点旧了,但我今天在研究中发现了一个名为SevenZipSharp的项目。http://sevenzipsharp.codeplex.com/ - Timmerz
    14
    未来的读者请注意,SevenZipSharp 似乎已被放弃。截至今天,最新的稳定版本(0.64)发布于2010年8月,有一些严重的多线程问题(根据错误报告)。自那以后只有很少的源代码提交 - Anttu
    12个回答

    0

    最简单的方法是使用.zip文件而不是.7z文件,并使用Dot Net Zip

    当将7zip命令转移到Shell时,存在其他问题,如用户权限。我曾遇到过SevenZipSharp的问题。

    Private Function CompressFile(filename As String) As Boolean
    Using zip As New ZipFile()
        zip.AddFile(filename & ".txt", "")
        zip.Save(filename & ".zip")
    End Using
    
    Return File.Exists(filename & ".zip")
    End Function
    

    DotNetZip 不支持7z档案,而这正是OP明确要求的。 - DarthGizka

    0

    这里有创建和提取7zip文件的代码(基于LZMA SDK - C#)

    注意:使用相同代码创建的7z文件可以被解压缩。该代码使用较早版本的LZMA SDK并使用托管的LZMA。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接