Currenty我得到的总存储空间大小为:
public static long getTotalSize(String path) {
try {
final StatFs statFs = new StatFs(path);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
return statFs.getTotalBytes();
} else {
return statFs.getBlockCount() * statFs.getBlockSize();
}
} catch (Exception e) {
return 0;
}
}
作为path
我正在使用Environment.getExternalStorageDirectory().getAbsolutePath()
。这导致54,0 GB。问题是该设备的大小为64 GB。
如何检测丢失的10 GB?
答案 0 :(得分:0)
StatFs - 检索有关文件系统空间的整体信息。这是Unix statvfs()的包装器。
从API级别18我们使用
long getTotalBytes - The total number of bytes supported by the file system.
对于较旧的API使用
int getBlockCount ()
int getBlockSize ()
StatFs stat = new StatFs(**path**);
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
作为路径您使用Environment.getExternalStorageDirectory(),请查看此值。在具有多个共享/外部存储目录的设备中,此目录表示用户将与之交互的主存储。
您需要使用路径的字符串值,如下所示: “到/ mnt / external_sd /” “/ MNT / extSdCard /”
您可以检索所有 / mnt / 设备的列表,并使用其中一个值。
File mntDir = new File("/mnt/");
if(mntDir.isDirectory()){
String[] dirList = mntDir.list();...}
或类似
var file=new Java.IO.File("storage/");
var listOfStorages=file.ListFiles();
或
String[] externals = System.getenv("SECONDARY_STORAGE").split(":");