如何将FileInfo读取RouterDb文件的代码转为MAUI等效实现?
MAUI读取Resources.Raw中RouterDb文件的等效实现
直接用MAUI的FileSystem.OpenAppPackageFileAsync方法获取资源流,再传入Itinero的RouterDb.Deserialize方法即可,代码如下:
using Itinero; using System.IO; // 异步读取并反序列化RouterDb var routerDb = await ReadRouterDbFromRawAsync(); async Task<RouterDb> ReadRouterDbFromRawAsync() { // 打开Raw目录下的gb.routerdb文件流 using var stream = await FileSystem.OpenAppPackageFileAsync("gb.routerdb"); // 反序列化为RouterDb对象 return RouterDb.Deserialize(stream); }
关键注意事项
- 确认文件的Build Action:右键
gb.routerdb→属性,将Build Action设置为MauiAsset(这是Resources/Raw目录下文件的默认设置,无需手动修改,但要确认)。 - 文件名大小写:跨平台环境下(如Android、iOS)资源路径区分大小写,确保代码中的文件名和实际文件名完全一致。
- 异步调用:
OpenAppPackageFileAsync是异步方法,需在异步上下文(如async Task方法)中调用,避免阻塞UI线程。
内容的提问来源于stack exchange,提问作者gfmoore
相关产品推荐
相关产品推荐

