来自绝对文件路径的 UWP 中的 ReadLinesAsync

ReadLinesAsync in UWP from absolute file path

我收到错误

The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B)

我的密码是

public async void ReadFile()
    {     
        var path = @"F:\VS\WriteLines.xls";
        var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;

        var file = await folder.GetFileAsync(path);
        var readFile = await Windows.Storage.FileIO.ReadLinesAsync(file);
        foreach (var line in readFile.OrderBy(line =>
        {
            int lineNo;
            var success = int.TryParse(line.Split(';')[4], out lineNo);
            if (success) return lineNo;
            return int.MaxValue;
        }))
        {
            itemsControl.Items.Add(line);
        }
    }

错误出现在 var file = await folder.GetFileAsync(path);

您正在请求具有来自应用程序本地文件夹的绝对路径的文件 - 因此当您提供包含驱动器名称的路径时它会抛出该错误。

一般来说,UWP 对 where/how 您可以从中获取文件非常严格 - 我不认为您可以从示例中的绝对路径中获取它(应用程序需要更多权限才能到达类似的地方)。你可以试试StorageFile.GetFileFromPathAsync

有关应用程序可以访问的位置的详细信息 - UWP apps on Windows 10: File access permissions

您无法在 UWP 应用程序中从磁盘上的任意位置读取文件。 您仍然可以通过多种方式完成任务:

  1. 您可以将 WriteLines.xls 文件添加到您的项目并将其 构建操作 设置为 Content复制到输出目录复制如果更新。然后,您只需将 "path" 值替换为:
  2. 即可使用您拥有的代码访问该文件

var path = @"WriteLines.xls"

More details here

  1. 如果您需要能够从磁盘读取任何文件,您需要使用 FilePicker select 文件或将文件复制到文档文件夹并将文件夹更改为:

var folder = KnownFolders.DocumentsLibrary;

More details here