安卓:SQLiteDatabase大小

3

我在我的应用程序中使用Android的SQLiteDatabase。应用程序的一部分涉及从服务器下载大量数据并将其存储在手机的本地数据库中。有没有办法找出数据库实际上会占用多少手机空间?我在项目文件夹中找不到任何与数据库相关的文件。

2个回答

11
本地SQLite数据库存储在Environment.getDataDirectory() + /data/<包名>/databases中。您还可以调用SQLiteDatabase$getPath()方法。
SQLiteDatabase db;
// ...
long size = new File(db.getPath()).length();

由于某些原因,我找不到实际的目录,但上面的代码有效。我得到了大约100万个结果。它是以字节为单位吗? - Jin
是的,length() 方法返回文件大小(以字节为单位)(如果文件不存在,则返回零)。 - Vladimir

1
如果您正在使用Eclipse,请按照以下步骤操作:
  1. 运行或调试您的项目。
  2. 打开文件浏览器窗口。
  3. 向下滚动主要的/data目录,直到找到您的包/数据库(com.blabblah.appname/databases/)文件夹。

您将在此目录中看到您的数据库。如果您想从手机中提取DB,请使用文件浏览器窗口顶部的按钮,第一个按钮从设备中提取文件,第二个按钮允许您将文件放入设备中,最后一个按钮删除所选文件。

我经常从我的应用程序中获取我的DB,并在SQLite客户端中进行一些“离线”测试,这非常方便。

希望这有所帮助。


非常感谢。由于某种原因,我找不到实际的数据库或数据目录(在我的Eclipse项目文件夹中寻找了很久,但无处可寻)。我一直在workspace/project_name/*中查找。您有任何其他想法吗? - Jin
你使用了错误的窗口,你可能在使用“项目资源管理器”而不是“文件资源管理器”。 “项目资源管理器”只会显示软件包文件夹,它不会显示软件包存储数据的本地文件夹。为此,您需要使用上面提到的“文件资源管理器” :) 此外,如果您还没有创建数据库,它也不会在"data/package/databases"文件夹中出现,我知道这似乎很明显,但请确保您的数据库在Eclipse的正确窗口中成功创建。 - AutoM8R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接