我一直在尝试找到一个位置来存储我的应用程序数据库,我可以在 Android 模拟器的文件浏览器中找到该数据库。根据我当前的设置,重新安装应用程序后,数据库将被擦除。我想让用户轻松地将数据库转移到新手机上,并使其能够适应更新/重新安装。我一直保存到 SpecialFolder。个人位置:
string dbName = "AppStuff.db";
string folderPath = stem.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string fullPath = Path.Combine(folderPath, dbName);
我遇到了很多 SpecialFolder.MyDocuments。这不是和个人一样吗?有什么建议吗?
我遇到了同样的问题并偶然发现了你的问题。我已将答案发布在此线程上。但为了以防万一,也会在这里提供答案:
Xamarin Android 和 MAUI Android 文件位置似乎不同。 我的 Xamarin SQLite 数据库存储在:
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "database.db3")
但是,在 Xamarin Android 上,文件路径是:
/data/user/0/my.app/files/.local/share/database.db3
但是当使用完全相同的代码访问 MAUI Android 中的数据库时,会导致:
/data/user/0/my.app/files/database.db3
我的解决方案是根据平台调整旧数据库的路径: '''
#if ANDROID
var databaseV1Path = ".local/share/database.db3";
#else
var databaseV1Path = "database.db3";
#endif
var legacyDatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), databaseV1Path)
我利用这个机会优化了我的数据库并将数据重新映射到 MAUI 的新数据库,因为图像名称也需要更改以适应调整大小的蛇形情况要求,然后删除旧的数据库文件。
希望这有帮助!