.NET Maui中获取Resources\Raw目录文件路径的方法
解决方法
标记为MauiAsset的文件是嵌入到应用包里面的,没有可直接访问的物理路径,没法直接用路径打开SQLite连接。正确的做法是先把嵌入的数据库复制到应用的可读写目录,再用这个目录的路径来连接。
具体步骤
- 复制嵌入数据库到可读写目录
先检查目标位置有没有这个数据库,没有的话就从资源里读出来复制过去:
using var stream = await FileSystem.Current.OpenAppPackageFileAsync("example.db3"); string targetPath = Path.Combine(FileSystem.AppDataDirectory, "example.db3"); if (!File.Exists(targetPath)) { using var fileStream = File.Create(targetPath); await stream.CopyToAsync(fileStream); }
- 用目标路径打开SQLite连接
现在就可以用复制后的路径创建连接了:
db = new SQLiteConnection(targetPath);
补充说明
MauiAsset类型的文件会被打包进APK/IPA这类应用包中,不存在独立的文件系统路径,只能通过流读取。- 应用包目录是只读的,就算能拿到路径,SQLite也需要可读写的文件才能正常操作(比如写入数据、建表),所以必须复制到
AppDataDirectory这种可读写目录。
内容的提问来源于stack exchange,提问作者GDT48
相关产品推荐
相关产品推荐

