gpt4 book ai didi

java - 当我测量外部 sdcard 存储时,输出为负数

转载 作者:行者123 更新时间:2023-11-29 21:01:47 25 4
gpt4 key购买 nike

我知道用这种方式测量我的 SD 卡的存储空间,但我在-ve 图

中得到了存储字节

我不知道我的系统如何给我-ve figure存储

我只在我的外部存储中得到了错误的数字,但我的内部存储给了我完美的数字

我在 api 级别 17 中测试

如何获取sdcard的原始内存大小?

我不应用 Formatter.formatShor.... Log.d("sdcard", "Total 2:"+ tot0 ); 因为它不适用于-ve 号。

提前致谢。

int tot0 = statFs0.getBlockCount() * block0;

//mysdcard path
StatFs statFs0 = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
int block0 = statFs0.getBlockSize();
int avail0 = statFs0.getAvailableBlocks() * block0;
int tot0 = statFs0.getBlockCount() * block0;

Log.d("sdcard", "block size 0 :"+Formatter.formatShortFileSize(DemoActivity.this,block0));
Log.d("sdcard", "free slot 1:"+Formatter.formatShortFileSize(DemoActivity.this,avail0));
Log.d("sdcard", "Total 2:"+ tot0 );

//myinternal sdcard path
StatFs statFs1 = new StatFs("/storage/sdcard1/");
int block1 = statFs1.getBlockSize();
int avail1 = statFs1.getAvailableBlocks() * block1;
int tot1 = statFs1.getBlockCount() *block1;

Log.d("sdcard", "block slot 4: "+Formatter.formatShortFileSize(DemoActivity.this,block1));
Log.d("sdcard", "free slot 5:"+Formatter.formatShortFileSize(DemoActivity.this,avail1));
Log.d("sdcard", "Total 6:"+Formatter.formatShortFileSize(DemoActivity.this,tot1));

我的日志:

09-16 15:28:44.501: D/sdcard(4148): block size 0 :32KB
09-16 15:28:44.501: D/sdcard(4148): free slot 1:1.4GB

09-16 15:28:44.501: D/sdcard(4148): 总计 2:-705691648

09-16 15:28:44.502: D/sdcard(4148): block slot 4: 16KB
09-16 15:28:44.503: D/sdcard(4148): free slot 5:845MB
09-16 15:28:44.504: D/sdcard(4148): Total 6:1.3GB

enter image description here

最佳答案

您的 SD 卡大约有 8 GB 的存储空间,即 8589934592 的整数。这不适合 int 值,因此计数器溢出,并回绕了几次。您需要将 statFs0.getBlockCount() * block0 的值存储到一个 long 中,并声明 block0 本身 一样长。

StatFs statFs0 = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
Long block0 = (long) statFs0.getBlockSize();
Long avail0 = statFs0.getAvailableBlocks() * block0;
Long tot0 = statFs0.getBlockCount() * block0;

关于java - 当我测量外部 sdcard 存储时,输出为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com