0

我尝试通过使用检查我的android手机上的可用空间,getDataDirectory().getPath()getRootDirettory().getAbsolutePath()得到了这些结果,

使用getRootDirectory().getAbsolutePath()

StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
    Log.w("Path", String.valueOf(Environment.getRootDirectory()) );
    Log.w("Path", Environment.getRootDirectory().getAbsolutePath());
    long free_memory = statFs.getAvailableBlocksLong() * statFs.getBlockSizeLong();
    Log.d("Available byte by Environment.getRootDirectory().getAbsolutePath(): ", String.valueOf(free_memory/1048576));

日志猫:

W /路径:/系统

W /路径:/系统

W/Available byte by Environment.getRootDirectory().getAbsolutePath():: 91


使用getRootDirectory().getPath()

statFs = new StatFs(Environment.getDataDirectory().getPath());
    Log.w("Path", String.valueOf(Environment.getDataDirectory()) );
    Log.w("Path", Environment.getDataDirectory().getPath());
    long free_memory02 = statFs.getAvailableBlocksLong() * statFs.getBlockSizeLong();
    Log.d("Available byte by Environment.getDataDirectory().getPath(): ", String.valueOf(free_memory02/1048576));

日志猫:

带/路径:/数据

带/路径:/数据

W/Environment.getDataDirectory().getPath() 提供的可用字节:: 21426 MB 或 20.924 GB

但是当我从手机中的设置中检查可用空间时,只显示:20.34 GB

检查手机可用空间的最佳准确方法是什么?为什么getRootDirectory().getAbsolutePath()getDataDirectory.getPath()提供相同的空间?

4

1 回答 1

2

检查可用空间的最佳准确方法是什么

最好Environment.getExternalStorageDirectory()用于检查可用内存。

内部存储中有不同的分区

/data分区:只有用户数据。//getDataDirectory()

/system分区:保存核心 Android 操作系统。//getRootDirectory()

为什么 getRootDirectory().getAbsolutePath() 和 getDataDirectory().getPath() 不给相同的空间?

因为它们是不同的目录。

您可以使用

  final StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
  long totalinternal = (long) stat.getBlockSize() * (long) stat.getBlockCount();
  long available = (long) stat.getBlockSize() * (long) stat.getAvailableBlocks();
于 2018-04-07T05:20:23.720 回答