如何将zip文件内容提取到.NET 4.5中的文件夹中

时间:2016-01-13 17:38:56

标签: c# zip .net-4.5 7zip compression

以下问题的答案似乎概述了如何使用System.IO.Commpression.ZipFile.ExtractToDirectory方法调用来提取文件。 "的ZipFile"在添加对System.IO.Compression的引用时,似乎并不存在于.NET 4.5中。如何从.NET 4.5中的* .zip文件中提取文件?

How to Unzip all .Zip file from Folder using C# 4.0 and without using any OpenSource Dll?

这似乎显示了如何压缩文件。但我正在寻找相反的结果。

Zipping files in .NET 4.5

即使这个问题引用了" ZipFile"在源代码中。但我似乎无法找到这门课。

How to extract just the specific directory from a zip archive in C# .NET 4.5?

enter image description here

编辑:

注意7z.exe(来自7zip包)是如何工作的。必须与.NET和7zip发生冲突。 ZipFile现在似乎工作正常。

private void extract_Click(object sender, EventArgs e)
{
    string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
    exePath = @"C:\test";  // path during troubleshooting

    ////var cmd1 = "cd \"" + exePath + "\"";
    ////ExecuteCommand(cmd1, 100, exePath);

    //var cmd2 = "\"" + exePath + "\\7z.exe\" x \"" + exePath + "\\source.zip\"";
    //ExecuteCommand(cmd2, 100, exePath);

    string zipPath = exePath + "\\source.zip";
    string extractPath = exePath;

    // needed explicit reference to System.IO.Compression.FileSystem
    ZipFile.ExtractToDirectory(zipPath, extractPath);


}

private static int ExecuteCommand(string command, int timeout, string dir)
{
    var processInfo = new ProcessStartInfo("cmd.exe", " /C " + command)
    {
        CreateNoWindow = true,
        UseShellExecute = false,
        WorkingDirectory = dir,
    };

    var process = Process.Start(processInfo);
    process.WaitForExit(timeout);
    var exitCode = process.ExitCode;
    process.Close();
    return exitCode;
}

1 个答案:

答案 0 :(得分:2)

您需要添加对System.IO.Compression.FileSystem程序集的引用。

每个库类都有一个MSDN页面。这是the one for ZipFile

请注意顶部中命名空间和程序集的规范。