在c#中整理归档文件

本文关键字:归档文件 | 更新日期: 2023-09-27 18:02:35

我想静默提取.rar存档,. net在IO中没有任何Rar类。压缩,所以我想使用cmd(它比外部dll更好)。它提取,但不是在静音模式。我做错了什么?

const string source = "D:''22.rar";
string destinationFolder = source.Remove(source.LastIndexOf('.'));
string arguments = string.Format(@"x -s ""{0}"" *.* ""{1}'""", source, destinationFolder);
Process.Start("winrar", arguments);

在c#中整理归档文件

我自己使用这段代码(添加了您的代码):

const string source = "D:''22.rar";
string destinationFolder = source.Remove(source.LastIndexOf('.'));
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = "'"C:''Program Files''WinRAR''winrar.exe'"";
p.StartInfo.Arguments = string.Format(@"x -s ""{0}"" *.* ""{1}'""", source, destinationFolder);
p.Start();
p.WaitForExit();

这将在后台启动WinRAR程序,并在文件完成unring后将控制权交还给您。

希望能有所帮助

使用SharpCompress https://github.com/adamhathcock/sharpcompress/blob/master/USAGE.md还有一个nuget包便于安装。

Install-Package sharpcompress -Version 0.22.0

或者,您可以在应用程序中嵌入名为unRAR的工具,该工具是由WinRAR开发人员开发的小型可执行文件(官方下载)。

这个工具是免费的,因此你的用户不需要有WinRAR许可证来使用你的应用程序。可以使用相同的方式执行txtechhelp

使用NUnrar,还有一个nuget包方便安装。

Install-Package nunrar
NUnrar.Archive.RarArchive.WriteToDirectory(fileName,destinationfileName);

正如Mihail Shishkov建议的那样,可以使用SharpCompress库来解压文件。

dotnet add package SharpCompress

下面是一个基本用法的例子:

var archive = RarArchive.Open("/Downloads/archive.rar");
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
    entry.WriteToDirectory("/Downloads");

我尝试在macOS下的。net 6应用程序中使用它,它工作得很好。