Android 为什么可以';我们不能从/raw或/assets读取sqlite文件吗?

Android 为什么可以';我们不能从/raw或/assets读取sqlite文件吗?,android,Android,我有一个sqlite数据库,我想与我的应用程序一起分发。大约3mb。如果我理解正确,如果它位于我的应用程序的/raw或/assets文件夹中,我就不能直接打开它,对吗?我们需要首先直接将其复制出来,如: 那么我的应用程序将消耗两倍于正常情况的磁盘空间?我不明白为什么需要将数据库文件放在特定的文件夹中 谢谢 那么我的应用程序将消耗两倍于正常情况的磁盘空间 对。从技术上讲,可能更多,因为您的数据库是在APK文件中压缩的 我不明白为什么需要将数据库文件放在特定的文件夹中 数据库文件不必位于特定文件夹

我有一个sqlite数据库,我想与我的应用程序一起分发。大约3mb。如果我理解正确,如果它位于我的应用程序的/raw或/assets文件夹中,我就不能直接打开它,对吗?我们需要首先直接将其复制出来,如:

那么我的应用程序将消耗两倍于正常情况的磁盘空间?我不明白为什么需要将数据库文件放在特定的文件夹中

谢谢

那么我的应用程序将消耗两倍于正常情况的磁盘空间

对。从技术上讲,可能更多,因为您的数据库是在APK文件中压缩的

我不明白为什么需要将数据库文件放在特定的文件夹中

数据库文件不必位于特定文件夹中。但是,
assets/
是开发机器上的一个文件夹;它是设备上APK文件的一部分。
res/raw/
中的所有内容也是如此


顺便说一句,我推荐。

什么?但是,我无法将其从/raw或/assets文件夹中删除。对,这就是我的困惑所在-我们可以直接从/assets或/raw中读取其他资产,而无需首先复制它们(或者这可能是操作系统在安装时自动为我们完成的)。缺点是,对于3mb sqlite db,我需要(1)在第一次启动时花几秒钟将其复制过来,(2)3mb在apk中消耗,然后在复制完成后在内部存储中消耗。我知道我们对此无能为力,这就是系统的工作方式,只是看起来它可能会更好。Thanks@user291701:“我们可以直接从/assets或/raw读取其他资产”--作为
InputStream
,是的,但不用于随机访问,也不用于修改。“看起来可能会更好”--欢迎您尝试使用该工具,在第一次运行时半自动下载数据库。或者,您可以在第一次运行时自己下载数据库。