通过 getDataDirectory() 检查可用 space 和获取 Root Directory() 不相同
Check avaliable space by getDataDirectory() and getRootDirectory() is not same
我尝试使用 getDataDirectory().getPath()
和 getRootDirettory().getAbsolutePath()
在我的 android phone 上检查可用的 space,我得到了这些结果,
使用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));
Logcat:
W/Path: /system
W/Path: /system
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));
Logcat:
W/Path: /data
W/Path: /data
W/Available byte by Environment.getDataDirectory().getPath():: 21426
MB or 20.924 GB
但是当我从 phone 中的设置中检查可用 space 时,只显示:20.34 GB
在我的 phone 中检查可用 space 的最准确方法是什么?为什么 getRootDirectory().getAbsolutePath()
和 getDataDirectory.getPath()
不提供相同的 space?
What is the best accurate way to check available space
最好使用Environment.getExternalStorageDirectory()
来检查可用内存。
内部存储中有 different partitions。
/data 分区:只有用户数据。 //getDataDirectory()
/system 分区:包含核心 Android OS。 //getRootDirectory()
why getRootDirectory().getAbsolutePath() and
getDataDirectory().getPath() not give the same space?
因为它们是不同的目录。
您可以使用
final StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long totalinternal = (long) stat.getBlockSize() * (long) stat.getBlockCount();
long available = (long) stat.getBlockSize() * (long) stat.getAvailableBlocks();
我尝试使用 getDataDirectory().getPath()
和 getRootDirettory().getAbsolutePath()
在我的 android phone 上检查可用的 space,我得到了这些结果,
使用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));
Logcat:
W/Path: /system
W/Path: /system
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));
Logcat:
W/Path: /data
W/Path: /data
W/Available byte by Environment.getDataDirectory().getPath():: 21426 MB or 20.924 GB
但是当我从 phone 中的设置中检查可用 space 时,只显示:20.34 GB
在我的 phone 中检查可用 space 的最准确方法是什么?为什么 getRootDirectory().getAbsolutePath()
和 getDataDirectory.getPath()
不提供相同的 space?
What is the best accurate way to check available space
最好使用Environment.getExternalStorageDirectory()
来检查可用内存。
内部存储中有 different partitions。
/data 分区:只有用户数据。 //getDataDirectory()
/system 分区:包含核心 Android OS。 //getRootDirectory()
why getRootDirectory().getAbsolutePath() and getDataDirectory().getPath() not give the same space?
因为它们是不同的目录。
您可以使用
final StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long totalinternal = (long) stat.getBlockSize() * (long) stat.getBlockCount();
long available = (long) stat.getBlockSize() * (long) stat.getAvailableBlocks();