【问题标题】:Get the real SD Card available free space获取真正的 SD 卡可用空间
【发布时间】:2014-08-04 09:38:35
【问题描述】:

知道如何读取/获取 SD 卡上的实际可用空间量吗?我在 Android 4.3 上运行。我已经尝试了所有可能的方法来正确读取它,但是我得到的东西是实际可用空间的两倍多。

现在我已经尝试了经典

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();

使用 API 18 getAvailableBlocksLong 和其他 getBlockSizeLong,结果仍然相同。

唯一有效(但这不是我需要的)是 shell 命令 df。我还尝试了获取可用的可用空间功能,结果相同。而且这件事不仅发生在我的设备上,而且发生在我尝试代码的所有设备上。

【问题讨论】:

  • 请尝试使用getAvailableSpaceInMB() 获取可用空间(以 MB 为单位)。
  • 不是格式问题。问题是,无论我试图获得可用空间,这是错误的。我的 SD 卡上有 13.31gb 的空闲空间,但我得到了大约 24gb。

标签: java android eclipse storage


【解决方案1】:

使用这个:-

   StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
{ 
@SuppressWarnings("deprecation")
 long sdAvailSize = (long)stat.getAvailableBlocksLong() * (long)stat.getBlockSizeLong(); 
} else
{
 @SuppressWarnings("deprecation") 
double sdAvailSize = (double)stat.getAvailableBlocks() * (double)stat.getBlockSize();
 }

试试这个:-

double gigaAvailable = sdAvailSize / 1073741824;

如果这不起作用,则getAvailableBlocks() 更改为getBlockCount()

你也可以试试这个:-

/**
 * @return Number of gega bytes available on External storage
 */
public static long getAvailableSpaceInGB(){
    final long SIZE_KB = 1024L;
    final long SIZE_GB = SIZE_KB * SIZE_KB * SIZE_KB;
    long availableSpace = -1L;
    StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
    availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();
    return availableSpace/SIZE_GB;
}

复制自here :)

希望对你有帮助。

【讨论】:

  • 没有。依然没有。但我刚刚注意到有趣的事情:我已经运行了“df $EXTERNAL_STORAGE”,它指向内部存储......我得到了 24gb......它们被错误地显示为外部存储......我感觉要死了:(((
  • 伙计,阅读我的帖子。这正是我所说的:经典的 stat.get* 或 stat.get*Long 对我不起作用。感谢您的帮助。
  • 如果您检查内部存储中的可用空间,它会显示什么?
  • 我在内部获得 24gb(在设置->存储...);和 13 在外部。 df 在没有参数的情况下效果很好,但是如果我使用 df $EXT... 我只会显示内部存储 .../emulated/0
  • 您是否以编程方式检查过?
猜你喜欢
  • 2013-04-03
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 2018-04-26
  • 2011-08-06
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多