我正在编写一个应用程序,它可以获取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设备上可供我下载的应用程序的内部磁盘空间量,并且它是准确的,我可以使用。
谢谢!
答案 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;
}