我想以编程方式从实习存储中读取确切的容量。
我正在使用的是三星Galaxy S7 Edge 32GB设备。
在预装的Samsung FileManager(德语:Eigene Dateien)中,它显示了32GB的总容量。 即使在menu => settings =>存储它显示我32GB。
(在屏幕截图中显示)
当我使用下面的代码时,它显示我的总容量为24,4GB。
(在帖子末尾的日志中显示)
问题:如何获得设备的32GB总容量?
截图
完整代码:
package spicysoftware.com.space;
import android.os.Environment;
import android.os.StatFs;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String InternalFreeSpace = convertBytes(getInternalFreeSpace());
Log.v("InternalFreeSpace : ", InternalFreeSpace);
String InternalTotalSpace = convertBytes(getInternalTotalSpace());
Log.v("InternalTotalSpace : ", InternalTotalSpace);
String InternalUsedSpace = convertBytes(getInternalUsedSpace());
Log.v("InternalUsedSpace : ", InternalUsedSpace);
}
public long getInternalFreeSpace() {
//Get free Bytes...
long bytesAvailable = stat.getBlockSizeLong() * stat.getAvailableBlocksLong();
return bytesAvailable;
}
public long getInternalTotalSpace() {
//Get total Bytes
long bytesTotal = (stat.getBlockSizeLong() * stat.getBlockCountLong());
return bytesTotal;
}
public long getInternalUsedSpace() {
//Get used Bytes
long bytesUsed = getInternalTotalSpace() - getInternalFreeSpace();
return bytesUsed;
}
public static String convertBytes (long size){
long Kb = 1 * 1024;
long Mb = Kb * 1024;
long Gb = Mb * 1024;
long Tb = Gb * 1024;
long Pb = Tb * 1024;
long Eb = Pb * 1024;
if (size < Kb) return floatForm( size ) + " byte";
if (size >= Kb && size < Mb) return floatForm((double)size / Kb) + " KB";
if (size >= Mb && size < Gb) return floatForm((double)size / Mb) + " MB";
if (size >= Gb && size < Tb) return floatForm((double)size / Gb) + " GB";
if (size >= Tb && size < Pb) return floatForm((double)size / Tb) + " TB";
if (size >= Pb && size < Eb) return floatForm((double)size / Pb) + " PB";
if (size >= Eb) return floatForm((double)size / Eb) + " EB";
return "anything...";
}
public static String floatForm (double d) {
return new DecimalFormat("#.##").format(d);
}
}
日志
答案 0 :(得分:1)
当我使用下面的代码时,它显示我的总容量为24,4GB。
这是包含main_list = [
'\n Belgium, Female, 18-24 ',
'\n Belgium, Female, 18-24 '
]
for s in main_list:
# create a list split by comma
sub_list = s.split(",")
# cleanup any whitespace from each list item
sub_list = [x.strip() for x in sub_list]
print(sub_list)
的分区上的空间量。设备上将有其他分区,您将无法访问这些分区。
如何获得我设备的32GB总容量?
除非在root设备上,否则无法做到这一点。
答案 1 :(得分:0)
1。首先,打开命令提示符。在开发者选项已启用的情况下连接您的手机。在cmd上写"adb shell"
。您现在将进入电话路径。
2.其次,在cmd上写df -h
,这将显示总的电话存储空间分为不同的磁盘路径。
3。看到这张图片。enter image description here
` double size =
new File("/data").getTotalSpace() / (1024.0 * 1024 * 1024);
double sizesystem =
new File("/system").getTotalSpace() / (1024.0 * 1024 * 1024);
double sizedev =
new File("/dev").getTotalSpace() / (1024.0 * 1024 * 1024);
double sizecache =
new File("/cache").getTotalSpace() / (1024.0 * 1024 * 1024);
double sizemnt =
new File("/mnt").getTotalSpace() / (1024.0 * 1024 * 1024);
double sizevendor =
new File("/vendor").getTotalSpace() / (1024.0 * 1024 * 1024);
float total = (float) (sizemnt + sizedev + sizesystem + size + sizevendor + sizecache);
Log.e("total111", String.valueOf(total));`
在这里使用所有碟形路径并获取尺寸,然后求和全部并获得手机的实际存储空间。 iF手机为32 GB,您将看到32 GB的总存储空间。