我正在尝试使用 SharpCompress 从我的 UWP 应用程序中读取 .rar 文件。它在网络共享上运行良好,我可以从中读取存档没问题,但我在本地系统上任何地方的文件上都得到 System.UnauthorizedAccessException,包括例如 USB 驱动器。我可以通过其他方法访问这些文件,例如 StorageFile。BroadFileSystemAccess 是打开还是关闭都没有区别。我在 C# 和 Vb.net 中都尝试过这是我在 C# 中的测试应用程序的代码。异常发生在 ArchiveFactory.Open。
我也可以使用 .net 压缩方法读取 Zip 文件,但它们不能处理 rar 文件,因此需要 SharpCompress。
using System;
using System.IO;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using SharpCompress;
using Windows.Storage.Pickers;
using Windows.Storage;
using SharpCompress.Archives;
namespace TestRAR
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
OpenRAR.Click += OpenRAR_Clicked;
}
public async void OpenRAR_Clicked(object sender, RoutedEventArgs e)
{
FileOpenPicker picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".rar");
picker.FileTypeFilter.Add(".cbr");
picker.FileTypeFilter.Add(".cbz");
picker.FileTypeFilter.Add(".zip");
StorageFile pickfile = await picker.PickSingleFileAsync();
if (pickfile == null) { return; }
string pth = pickfile.Path;
FileInfo pickInfo = new FileInfo(pth);
try
{
ListRARs.Items.Clear();
using (var Arch = ArchiveFactory.Open(pickInfo))
{
foreach (IArchiveEntry a in Arch.Entries)
{
string thisKey = a.Key;
ListRARs.Items.Add(thisKey);
}
}
}
catch{ }
}
}
}
这是我第一次使用 SharpCompress,我完全被难住了。有什么想法吗?