0

我正在编写一个应用程序来获取 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 设备上的内部磁盘空间量,它是准确的和我可以使用的东西。

谢谢!

4

1 回答 1

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;
}
于 2013-05-17T17:10:07.727 回答