【问题标题】:Xamarin forms, OSM file, system IO File not found exceptionXamarin 表单、OSM 文件、系统 IO 文件未找到异常
【发布时间】:2021-04-01 00:37:26
【问题描述】:

您好,我在 Xamarin 表单中处理某些文件时遇到问题。每次我运行我的代码时,我都会收到 systemIO FileNotfound 异常。我正在使用的代码如下。关于 routerDB 的内容是我正在使用的名为 Itinero 的寻路 NuGet 包的一部分。在我的代码甚至可以到达 create routerDb.LoadOsmData 行之前,它一直卡在第 4 行并返回错误: System.IO.FileNotFoundException: 'Could not find file "/Date\wales-latest.osm.pbf"'

这是该文件“wales-latest.osm.pbf”在 Xamarin 形式中的绝对路径。

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# xamarin file-handling


    【解决方案1】:

    c:\您的电脑上的文件夹。 Xamarin 在移动设备(或模拟器)上运行,并且在运行时它无权访问您的 PC 的文件系统。如果您想将文件作为应用程序的一部分包含在内,则需要将其作为项目的一部分包含在内,以便与您的应用程序一起部署

    Xamarin 文档在 working with files 上有完整的文章

    【讨论】:

    • 谢谢!这绝对是问题所在,现在我可以继续我的新手冒险的下一部分,试图弄清楚如何将它作为我项目的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2023-03-09
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多