【问题标题】:extract 7zip in C# code在 C# 代码中提取 7zip
【发布时间】:2023-03-23 18:04:02
【问题描述】:

我需要在 C# 中使用 7zip。没有控制台,只有 7zSharp.dll ? + 我在这里找到了一些数据

http://7zsharp.codeplex.com/releases/view/10305,

但我不知道如何使用它(-我可以创建 .bat(.cmd) 文件,但我需要通过 dll 文件) 确切地说:我需要使用密钥提取 .7z 文件)

【问题讨论】:

标签: c# .net 7zip


【解决方案1】:

下载standalone console version from 7zip.com 并将其添加到您的项目中。

您需要在项目中添加这 3 个文件:

  1. 7za.exe
  2. 7za.dll
  3. 7zxa.dll

别忘了在它的首选项中说复制到输出目录。

提取档案:

public void ExtractFile(string sourceArchive, string destination)
    {
        string zPath = "7za.exe"; //add to proj and set CopyToOuputDir
        try
        {
            ProcessStartInfo pro = new ProcessStartInfo();
            pro.WindowStyle = ProcessWindowStyle.Hidden;
            pro.FileName = zPath;
            pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
            Process x = Process.Start(pro);
            x.WaitForExit();
        }
        catch (System.Exception Ex) {
            //handle error
        }
    }

创建存档:

public void CreateZip(string sourceName, string targetArchive)
{
    ProcessStartInfo p = new ProcessStartInfo();
    p.FileName = "7za.exe";
    p.Arguments = string.Format("a -tgzip \"{0}\" \"{1}\" -mx=9", targetArchive, sourceName);
    p.WindowStyle = ProcessWindowStyle.Hidden;
    Process x = Process.Start(p);
    x.WaitForExit();
}

【讨论】:

  • 您好,如何在参数中包含密码以使用上述解决方案创建压缩和提取压缩?
  • @hunterex 密码的参数是“-p”所以它是-pMySuperS3cr3tPassword
  • 为了使 ProcessWindowStyle 工作,您还需要将 UseShellExecute 设置为 true
  • 请注意Process 实现IDisposable,所以不要忘记将最后两行包装到using 语句中
【解决方案2】:

7zip 的作者提供了LZMA SDK 和良好的文档,应该能够实现您想要的。 SDK 包含能够压缩/解压缩的 C# 代码。

另一种选择是使用 C# (.NET) Interface for 7-Zip Archive DLLs 之类的东西

更新: 另一位用户在这里提出了类似的问题:How do I create 7-Zip archives with .NET? 答案有几个我提供的相同链接,还有几个。

【讨论】:

  • 请注意,.NET LZMA SDK 代码不提供流式压缩和解压缩,因此处理大文件而不将它们写入磁盘非常困难。主要功能基本上是这样的:void Code(Stream in, Stream out)。读取压缩文件并按照您需要编写一个 Stream 类来处理它,该类在写入时进行处理。像 new Decompressingwrapper(compressedInput) 和 `new CompressingWrapper(decompressedInput) 这样的包装流将使其在大多数情况下更容易使用.
【解决方案3】:

这个库看起来不支持加密文件。没有方法将键作为参数。

【讨论】:

  • ...以及如何使用密钥提取 .7z 文件?
  • 不适用于此库...您可以只使用 System.Diagnostics 启动控制台进程,但看到您不想这样做...开始阅读 SDK :)跨度>
【解决方案4】:

7zSharp 库似乎不支持密码作为输入,只是一个 zip 文件。

该库仅调用 7zip 的 .exe,因此您可以下载源代码并对其进行更改以接受密码参数,然后将其传递给可执行文件。

【讨论】:

  • 是的,那太好了,我刚刚解释了如何做到这一点。我不会为你写代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2019-09-05
  • 2020-09-04
  • 2012-05-25
  • 2012-11-05
相关资源
最近更新 更多