.net 在C#中解压缩归档文件

0dxa2lsx  于 2022-12-14  发布在  .NET
关注(0)|答案(5)|浏览(170)

我想静默解压缩.rar归档文件。.Net在IO.Compression中没有任何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);
arknldoa

arknldoa1#

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

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程序,并在文件完成解压缩后将控制权返回给您。
希望能有所帮助

qco9c6ql

qco9c6ql2#

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

Install-Package sharpcompress -Version 0.22.0
idfiyjo8

idfiyjo83#

或者,您可以在应用程序中嵌入名为unRAR的工具,这是WinRAR开发人员开发的小型可执行文件(official download)。
此实用程序是免费的,因此您的用户将不需要有WinRAR许可证来使用您的应用程序。:)它可以使用相同的方式txtechhelp描述执行。

j9per5c4

j9per5c44#

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

Install-Package nunrar

NUnrar.Archive.RarArchive.WriteToDirectory(fileName,destinationfileName);
yi0zb3m4

yi0zb3m45#

正如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应用程序中使用它,它工作得很好。

相关问题