2012-03-21 46 views
2

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

回答

9

本地SQLite数据库存储在Environment.getDataDirectory() + /data/<Package Name>/databases。也可以拨打SQLiteDatabase $ getPath()方法。

SQLiteDatabase db; 
// ... 
long size = new File(db.getPath()).length(); 
+0

由于某种原因我找不到实际的目录,但上面的代码工作正常。我得到了一百万的地方。它是以字节为单位吗? – Jin 2012-03-21 22:21:56

+0

是的,length()方法以字节为单位返回文件大小(如果文件不存在,则返回零)。 – Vladimir 2012-03-21 22:31:04

1

如果您使用的是Eclipse做到这一点:

  1. 运行或调试项目。
  2. 打开文件资源管理器窗口。
  3. 向下滚动主/数据目录,直到找到包/数据库/(com.blabblah.appname/databases /)文件夹。

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

我经常从我的应用程序抓住我的数据库在这方面,并在SQLite客户端做一些“离线”测试,这非常方便。

希望有所帮助。

+0

非常感谢。出于某种原因,我找不到实际的数据库或数据目录(遍布我的Eclipse项目文件夹,无处可查)。我一直在找工作区/ project_name/*。任何想法可以在哪里? – Jin 2012-03-21 22:23:04

+0

您使用的窗口错误,您可能使用了Project Explorer而不是File Explorer。 Project Explorer将只显示包文件夹,它不会显示包存储数据的本地文件夹。为此,您需要使用上述的文件资源管理器:)另外,如果您尚未创建数据库,它不会是数据/包/数据库文件夹,我知道这似乎很明显,但确保您的数据库正在成功创建(当它进入Eclipse中的右侧窗口)。 – AutoM8R 2012-03-21 23:09:38