【问题标题】:C# UWP Read and write files: Access deniedC# UWP 读写文件:拒绝访问
【发布时间】:2021-05-06 16:11:23
【问题描述】:

我正在创建一个 UWP 应用程序来拆分 CSV 和 Excel 文件。用户必须在机器上的任何文件夹中选择一个文件,并且应用程序必须读取该文件。在流程结束时,应用程序必须根据用户的需要保存一个或多个文件。

当我尝试使用此代码读取 CSV 文件时

using (var reader = new StreamReader(file))
using (var csv = new CsvReader(reader, config))
{
    return csv.GetRecords<dynamic>();
}

我收到一个错误

System.UnauthorizedAccessException: '访问路径 'C:\Users\enric\Downloads\combined_data.csv' 被拒绝。'

我检查了Package.appxmanifest 中的功能,但没有与文件或文件夹相关的功能。只有Removable Storage 看起来与我正在寻找的相似,但它不起作用。

Microsoft documentation 中,我阅读了添加自定义功能

<Capabilities><uap:Capability Name="documentsLibrary"/></Capabilities>

但它也不起作用。

【问题讨论】:

标签: c# uwp


【解决方案1】:

您无需指定功能,只需使用选择文件或读取文件代码即可,此代码也可以在 Microsoft docdoc 中找到。

private async void Btn_OpenFile_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            try
            {
                FileOpenPicker picker = new FileOpenPicker();
                picker.FileTypeFilter.Add(".csv");
                picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;

                var file = await picker.PickSingleFileAsync();
                if (file != null)
                {
                    
                }
            }
            catch
            {
                
            }
        }

【讨论】:

  • 这是如果我想在使用FileOpenPicker 时使用该文件。我想稍后或在后台程序中打开文件。
  • 或许你可以试试FutureAccessList,见stackoverflow.com/a/38107910/7068790
猜你喜欢
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多