使用7zip压缩文件的C# .net示例代码

9

我已经在我的机器上安装了7-zip 4.65,路径为C:\Program files。我想在C#代码中使用它来压缩一个文件。文件名将由用户动态提供。请问有人可以提供一个在C#代码中如何使用7zip的示例代码吗?

5个回答

11

以上给出了很多答案,但我使用下面提到的代码来使用7zip压缩或解压文件。

您必须在系统中安装7zip应用程序。

     public void ExtractFile(string source, string destination)
        {
            // If the directory doesn't exist, create it.
            if (!Directory.Exists(destination))
                Directory.CreateDirectory(destination);

            string zPath = @"C:\Program Files\7-Zip\7zG.exe";
// change the path and give yours 
            try
            {
                ProcessStartInfo pro = new ProcessStartInfo();
                pro.WindowStyle = ProcessWindowStyle.Hidden;
                pro.FileName = zPath;
                pro.Arguments = "x \"" + source + "\" -o" + destination;
                Process x = Process.Start(pro);
                x.WaitForExit();
            }
            catch (System.Exception Ex) {
              //DO logic here 
              }
        }

创建zip文件
public void CreateZip()
{
    string sourceName = @"d:\a\example.txt";
    string targetName = @"d:\a\123.zip";
    ProcessStartInfo p = new ProcessStartInfo();
    p.FileName = @"C:\Program Files\7-Zip\7zG.exe";
    p.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";
    p.WindowStyle = ProcessWindowStyle.Hidden;
    Process x = Process.Start(p);
    x.WaitForExit();
}

这是我正在进行的一个项目。起初,我从7-zip网站下载了LZMA SDK,并使用Pavlov的C#库编写了一些压缩代码。效果很好!然后我意识到我手头只有单独的LZMA文件,而不是7z归档文件。Pavlov没有提供任何用于此的C#库。因此,我决定最简单的方法是调用7z.exe进程。感谢您的示例,这将让我入门。 - Steve Greene
1
pro.Arguments = "x "" + source + "" -o" + destination; 请问有人可以解释一下这些参数中的字符(x,~o)的含义是什么吗? - Apoorva Asthana
3
@ApoorvaAsthana 请前往检查此链接 https://sevenzip.osdn.jp/chm/cmdline/commands/index.htm - Vishal Sen
我会在CreateZip中使用try-catch块,就像在ExtractFile中一样,并添加一个检查sourceName是否为文件或文件夹的存在性检查。 - Fil

4

你需要的不是二进制版本,而是源代码。

可以通过LZMA SDK获取。

在那里,你会找到一个名为CS的文件夹,其中包含了用于7zip文件的C#算法实现。



0

J#能处理.7z格式吗?(OP没有指定具体的格式,但我知道7zip默认使用自己的格式,不过它也可以处理.zip格式。) - Joe White

0

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