Android上的getAvailableBlocks()实际上返回了什么?

时间:2013-05-15 07:40:41

标签: android storage diskspace

我正在编写一个应用程序,它可以获取Android设备上剩余的磁盘空间,并使用以下代码:

public int phone_storage_free()
{
    StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
    int Free  = (statFs.getAvailableBlocks() * statFs.getBlockSize()) / 1048576;
    return Free;
}

它返回35mb,这是一个很小的数量,所以我认为这是应用程序本身可用的磁盘空间量。然后我写了一些代码来下载大于35mb的文件,我将文件保存到path.getPath()+"/test.avi"并且它成功了。我再次运行上面的代码并获得了相同的35mb值。

所以我的问题是,我怎样才能获得Android设备上可供我下载的应用程序的内部磁盘空间量,并且它是准确的,我可以使用。

谢谢!

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。使用此代码:

public long phone_storage_free()
{        
    long val=0;
    File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSize();
    long availableBlocks = stat.getAvailableBlocks();
    val=availableBlocks * blockSize;
    return val;
}
相关问题