0

我正在尝试使用 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,我完全被难住了。有什么想法吗?

4

0 回答 0