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

时间:2016-06-06 15:18:27

标签: c# uwp uwp-xaml

我收到错误

  

文件名,目录名或卷标语法不正确。 (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);

2 个答案:

答案 0 :(得分:2)

您无法从UWP App中磁盘上的任意位置读取文件。 您可以通过以下几种方式完成任务:

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

    var path = @"WriteLines.xls"

    More details here

    1. 如果您需要能够从磁盘读取任何文件,则需要使用FilePicker选择文件或复制文档文件夹中的文件并将文件夹更改为:
    2. var folder = KnownFolders.DocumentsLibrary;

      More details here

答案 1 :(得分:1)

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

一般来说,UWP对于从何处/如何获取文件非常严格 - 我认为你不能从样本中的绝对路径获取它(app需要更多权限才能到达类似的地方)。您可以尝试StorageFile.GetFileFromPathAsync

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