C# 从绝对文件路径读取UWP中的ReadLinesAsSync
我犯了一个错误 文件名、目录名或卷标语法不正确。(HRESULT的例外:0x8007007B) 我的代码是C# 从绝对文件路径读取UWP中的ReadLinesAsSync,c#,uwp,uwp-xaml,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 folde
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(路径)处代码>您正在请求应用程序本地文件夹中具有绝对路径的文件-因此,当您提供包含驱动器名的路径时,它会抛出该错误
一般来说,UWP对从何处/如何获取文件有很大限制-我不认为您可以从示例中的绝对路径获取文件(应用程序需要更多权限才能访问类似的位置)。你可以试试
有关应用程序可以访问的位置的详细信息-。在UWP应用程序中,您无法从磁盘上的任意位置读取文件。
您仍然可以通过以下几种方式完成任务:
您可以将WriteLines.xls文件添加到项目中,并将其构建操作设置为内容,以及复制到输出目录设置为复制(如果更新)。然后,只需将“path”值替换为以下值,即可使用现有代码访问该文件:
var path=@“WriteLines.xls”
如果需要能够从磁盘读取任何文件,则需要使用文件选择器选择该文件,或将该文件复制到“文档”文件夹中,并将文件夹更改为:
var folder=KnownFolders.DocumentsLibrary代码>
只是为了确保路径正确且文件存在。旁注XLS通常为非文本格式。。。所以读成一行一行的文本可能会失败——但这不太可能是你们看到的错误原因。我也尝试过使用.txt文件,但它也不起作用。我坚持使用.xls是因为在普通的控制台代码中它工作正常,并且我能够成功地列出.xls中的行。我在提供路径的方式上是否犯了一些错误?在构建之前没有强调任何内容。只有在构建时,路径上才会出现错误。路径和文件格式正常。首先,你使用了错误的api,其次,你的应用程序可能没有访问aby文件的权限。看看这个。为什么需要从硬编码的url读取文件?基本上,在UWP中,文件必须位于应用程序安装文件夹、应用程序数据文件夹或文档库中,或者您需要让用户选择文件,例如使用文件选择器。他询问的是UWP,这与Win8不同。这个链接会更好:@Liero我找不到好的链接。Win8 RT很接近,但实际上您找到的链接比它好。我已经把它编辑到帖子里了。解决方案NR1实际上让我又开始了。非常感谢你。我不再得到错误和解决方案构建。我需要在XAML端进行分类,因为我仍然无法显示我的行。明白了,我设法在XAML页面上显示了我的.xls行。谢谢你的解决方案!