我正在开发一个图书馆应用程序并将图书存储为.sqlite文件。每本书的sqlite数据库文件大小约为10MB。我首先尝试将它放在assets文件夹中,然后将其复制到数据库/文件夹,但由于该文件是> 1Mb,这给了我一个IOException。然后我试图从原始文件夹访问它,但它仍然给我IOException。那么,访问这样一个文件的正确方法是什么。此外,将来应用程序可能需要从服务器下载此类文件,因此在这种情况下我应该在哪里存储此类数据库文件?
谢谢!
答案 0 :(得分:2)
在Android 3.0之前,您是not allowed to open files larger than 1mb。
从链接:[P] rior到Android 2.3,无法从APK中读取任何未压缩大小超过1 MB的压缩资产文件。
以下是一些解决方案:
也许您希望缩小数据库的大小,这可能是通过制作自己的数据库,或者删除一些您不需要/不想要的条目。
另一种解决方案是将数据库卸载到您有权访问的服务器,并要求应用程序访问Web以获取此服务器所需的数据。我可以想象一个很好的RESTful API来做到这一点。
答案 1 :(得分:0)
此问题有解决方法。 1MB的限制仅适用于SQLite文件,而不适用于其他文件类型。将您的SQLite文件重命名为“db.mp3”,然后当您的应用程序启动时,您可以将此文件复制到SD卡并将其用作SD卡中的普通SQLite文件。 我已经实现了这个解决方案,它在所有Android版本上运行得非常好。
答案 2 :(得分:0)
让应用程序将数据库从Web服务器下载到SD卡 - 这样可以节省在.apk中存储压缩版本和在外部存储未压缩版本的浪费。并且它并不是真正的更多不安全,因为.apk只是一个真正想要阅读的任何人的zip文件。