c# - Xamarin 表单、OSM 文件、系统 IO 文件未找到异常
问题描述
嗨,我在 Xamarin 表单中处理某些文件时遇到问题。每次我运行我的代码时,我都会收到 systemIO FileNotfound 异常。我正在使用的代码如下。关于 routerDB 的内容是我正在使用的名为 Itinero 的寻路 NuGet 包的一部分。在我的代码甚至可以到达 create routerDb.LoadOsmData 行之前,它一直卡在第 4 行并返回错误: System.IO.FileNotFoundException: 'Could not find file "/Date\wales-latest.osm.pbf"'
这是 Xamarin 表单中该文件“wales-latest.osm.pbf”的绝对路径。
C:\USW Pathfinder\USW Pathfinder\USW Pathfinder\bin\Debug\Date
我很沮丧这没有工作,我创建了另一个程序,但这次是一个 Windows 窗体,我输入了与下面相同的代码,它第一次完美地工作,并按我的预期为我创建了文件 wales.router.db。
这是该文件“wales-latest.osm.pbf”在 Windows 窗体中的绝对路径。
C:\Users\MYNAME\Desktop\Pathfinder\Pathfinder\bin\Debug\Date
我还尝试了 Xamarin 表单中更简单的文件处理代码,以查看是否可以访问任何文件,如第二个代码块中所示,并且总是遇到找不到文件。
请任何人都可以建议为什么会这样?
private void LoadButton_OnClicked(object sender, EventArgs e)
{
var routerDb = new RouterDb();
using (var stream = new FileInfo(@"Date\wales-latest.osm.pbf").OpenRead())
{
// create the network for cars.
routerDb.LoadOsmData(stream, Vehicle.Car);
}
// write the routerdb to disk.
using (var stream = new FileInfo(@"wales.routerdb").Open(FileMode.Create))
{
routerDb.Serialize(stream);
};
}
public void ReadButton_OnClicked(object sender, EventArgs e)
{
File.ReadAllText(@"Date\wales-latest.osm.pbf");
}
解决方案
c:\
是您 PC上的文件夹。Xamarin 在移动设备(或模拟器)上运行,并且在运行时它无权访问您的 PC 的文件系统。如果您想将文件作为应用程序的一部分包含在内,则需要将其作为项目的一部分包含在内,以便将其与您的应用程序一起部署
Xamarin 文档有关于处理文件的完整文章
推荐阅读
- c++ - 以内存为重点,在数组中查找 k 个最小/最大元素
- python - Spark:IllegalArgumentException:'不支持的类文件主要版本 55'
- php - Ajax 重载框架只工作一次
- flutter - 聚焦时将光标定位在 TextField 的末尾?
- node.js - ExpressJs 与 NodeJs 版本的兼容性
- javascript - 将鼠标悬停在破折号中的点上时突出显示日志
- ruby-on-rails - 我在哪里可以找到 Rails 作业的域设置?
- airflow - Airflow 基本身份验证隐藏了 Admin -menu 选项
- java - 在android上向谷歌地图添加坐标
- datagrip - Datagrip:带参数在oracle中执行sql语句