gpt4 book ai didi

c# - 如何在 c# winform 应用程序中提取包含多个文件夹并覆盖的 rar 文件

转载 作者:行者123 更新时间:2023-11-30 20:58:24 26 4
gpt4 key购买 nike

我想将一个 rar 文件解压到一个位置。问题是,rar 文件包含 4 个文件夹,并且提取失败。我需要将我的 rar 中的所有文件和文件夹提取到位置文件夹。并提取不存在的文件。

到目前为止我做了什么:

Process winrar = new Process();
winrar.StartInfo.FileName = WinrarPath + @"\unrar.exe";
winrar.StartInfo.CreateNoWindow = true;
winrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
winrar.EnableRaisingEvents = true;
winrar.ErrorDataReceived += new
DataReceivedEventHandler(winrar_ErrorDataReceived);
string src = downloadFilPath; // directory , not the file itself
string des = @"D:\"
winrar.StartInfo.Arguments = string.Format("x -o+ {0} {1}", src, des);
winrar.Start();
winrar.WaitForExit();

如果 rar 文件只包含一个文件夹,效果很好。问题在于其中包含多个文件夹的 rar 文件。也许它会帮助您为我的问题提供解决方案。

谢谢,修希

最佳答案

使用命令行开关“-o+”指定自动覆盖。在您的示例中,参数行将变为:

winrar.StartInfo.Arguments = string.Format("x -o+ \"{0}\" \"{1}\"", src, des);

但是,根据您需要此应用程序的可移植性和可靠性,您可能需要考虑使用 native .NET 库来处理 RAR 和其他存档。我过去成功使用过的一个这样的库是 SharpCompress .

来自 WinRAR 帮助文件:

Switch -O[+|-] - set the overwrite mode


This switch can be used both when extracting and updating archived files. Following modes are available:

-o Ask before overwrite (default for extracting files)

-o+ Overwrite all (default for updating archived files);

-o- Skip existing files.

关于c# - 如何在 c# winform 应用程序中提取包含多个文件夹并覆盖的 rar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com