在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);
我自己使用这段代码(添加了您的代码):
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应用程序中使用它,它工作得很好。