Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取SQLite可用空间%_Android_Sqlite - Fatal编程技术网

Android 获取SQLite可用空间%

Android 获取SQLite可用空间%,android,sqlite,Android,Sqlite,有没有办法获得应用程序的SQLite DB可用的可用空间量?我看到它返回了数据库的最大大小,但是有没有办法获取数据库当前占用的字节数?没有有意义的默认最大大小;您将首先遇到设备的存储大小限制 您可以使用类似这样的工具来估计数据增长时可能占用的空间,但在运行时无法轻松确定您离限制有多近 如果您担心数据库变得太大,您必须定期清理旧数据。 您不能使用(这会创建数据库文件的临时副本),但您可能希望启用,这至少可以确保数据库文件中未使用的页面不会超出范围。要回答您的问题,可以通过某种方法检查数据库当前使用

有没有办法获得应用程序的SQLite DB可用的可用空间量?我看到它返回了数据库的最大大小,但是有没有办法获取数据库当前占用的字节数?

没有有意义的默认最大大小;您将首先遇到设备的存储大小限制

您可以使用类似这样的工具来估计数据增长时可能占用的空间,但在运行时无法轻松确定您离限制有多近

如果您担心数据库变得太大,您必须定期清理旧数据。
您不能使用(这会创建数据库文件的临时副本),但您可能希望启用,这至少可以确保数据库文件中未使用的页面不会超出范围。

要回答您的问题,可以通过某种方法检查数据库当前使用的空间。正如Joe所指出的,您可以获取文件路径并检查文件的大小

我以前使用过这种方法来防止数据库超过特定的大小。在将数据写入数据库之后,我会调用一个函数来检查其大小,并在必要时删除行

public synchronized void checkDbSize()
{
    File f = m_context.getDatabasePath(DATABASE_NAME);
    long dbSize = f.length();

    if(dbSize > DB_SIZE_LIMIT)
    {
        //Delete X rows from DB
    }
}

为什么不使用并检查一下呢?谢谢。应用程序是否有设置的存储大小限制,还是基于整个设备的可用磁盘空间量?这会给出当前使用的空间量,而不是可用的可用空间量。我假设DB_SIZE_LIMIT是您设置的任意大小阈值。是的,这是真的。DB_SIZE_LIMIT是一个任意阈值。这个例子回答了您的第二个问题:“有没有办法获取数据库当前占用的字节数?”