从资产文件夹访问 SQLite 数据库而不复制到用户的数据文件夹

Accessing SQLite database from Assets Folder without copying to user's data folder

在我的 iOS 应用程序中,我有一个大型 (270MB)、预填充的只读 sqlite 数据库。我将数据保存在应用程序包中并毫无问题地查询它。我没有将数据库复制到用户的文档文件夹,因为在这种情况下,使用重复的数据库占用更多 space 是没有意义的。我有一个单独的小得多的数据库,我将其复制到用户的文档文件夹中以存储用户的首选项。该应用程序运行良好。

现在我正在尝试使用 Android Studio 将我的应用程序移植到 Android,但似乎无法从资产文件夹访问数据库。我已经找到了很多关于 Android 的数据库助手 类 的文档,我已经尝试过,但是方法似乎总是将数据库从资产文件夹复制到用户的数据文件夹。这将是 space 的浪费,而且根据我的经验,该应用程序无法在不崩溃的情况下复制数据库(可能是因为大小?我在复制较小的测试数据库时没有遇到任何问题)。

有没有办法不用复制到用户的数据文件夹就可以访问数据库?如果没有,谁能想到另一种方法来解决这个问题?

不可以,因为资源文件夹是只读的,所以您不能直接写入应用程序中 ASSETS 文件夹的文件。

所以你必须先将你的数据库从你的资产文件夹复制到你的 sdcard 然后只有你才能读取和写入它。

正如 GrIsHu 所说,您只能从资产文件夹中读取数据库。如果你需要做更多的操作,比如创建、更新、删除,你可以做一些技巧。将数据库从资产文件夹复制到存储,然后你可以做任何你想做的事。

这里有一个简单的例子 Working with Android Pre Built Database.

还有一个易于使用的库,用于从资产文件夹访问数据库。您可以在此处查看 [[=​​18=] SQLiteAssetHelper]。2 祝您好运!