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

时间:2015-05-07 04:56:06

标签: android sqlite android-studio android-assets

在我的iOS应用程序中,我有一个大型(270MB)预先填充的只读sqlite数据库。我将数据保存在应用程序包中并查询它没有任何问题。我不会将数据库复制到用户的文档文件夹中,因为在这种情况下使用重复数据库占用更多空间是没有意义的。我有一个单独的小得多的数据库,我将其复制到用户的文档文件夹中以存储用户的首选项。该应用程序工作正常。

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

有没有办法访问数据库而不将其复制到用户的数据文件夹?如果没有人能想到另一种接近这个的方法吗?

2 个答案:

答案 0 :(得分:1)

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

所以你必须先将你的资产文件夹中的数据库强制复制到你的SD卡,然后才能阅读&写进去。

答案 1 :(得分:0)

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

以下是Working with Android Pre Built Database.

的简要示例

还有一个易于使用的库,用于从assets文件夹访问数据库。你可以在这里查看[Android SQLiteAssetHelper]。2祝你好运!