【问题标题】:ReadLinesAsync in UWP from absolute file path从绝对文件路径读取 UWP 中的ReadLinesAsync
【发布时间】:2016-06-06 15:18:27
【问题描述】:

我得到错误

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

【问题讨论】:

  • 只是为了确保路径正确且文件存在。
  • 旁注 XLS 通常是非文本格式...因此读取文本行会失败 - 但它不太可能导致您看到的错误。
  • 我也尝试过使用 .txt 文件,但它也不起作用。我坚持使用 .xls,因为在纯控制台代码中它可以工作,并且我能够成功列出 .xls 中的行。
  • 我在提供路径的方式上是否犯了一些错误?在构建之前没有强调任何内容。仅当构建路径出现错误时。
  • 路径和文件格式没问题。首先ako,您使用了错误的api,其次,您的应用程序可能没有权限访问aby 文件。检查此msdn.microsoft.com/en-us/windows/uwp/files/…。为什么需要从硬编码的 url 读取文件?基本上,在 UWP 中,文件必须在应用程序安装文件夹、应用程序数据文件夹或文档库中,或者您需要让用户选择文件,例如使用文件选择器。

标签: c# uwp uwp-xaml


【解决方案1】:

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

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

var path = @"WriteLines.xls"

More details here

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

var folder = KnownFolders.DocumentsLibrary;

More details here

【讨论】:

  • 解决方案 nr 1 实际上让我重新开始。非常感谢您。我不再得到错误和解决方案构建。我需要在 XAML 方面对其进行整理,因为我仍然没有让它显示我的行。
  • 知道了,我设法在 xaml 页面上的 中显示我的 .xls 行。感谢 AlexDrenea 的解决方案!
【解决方案2】:

您从应用程序的本地文件夹中请求具有绝对路径的文件 - 因此,当您提供包含驱动器名称的路径时,它会引发该错误。

一般来说,UWP 对您从何处/如何获取文件有很大的限制——我认为您不能从示例中的绝对路径获取它(应用程序需要更多权限才能到达类似的地方)。你可以试试StorageFile.GetFileFromPathAsync

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2021-10-18
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
相关资源
最近更新 更多