如何查找 Android 上剩余的可用存储空间(磁盘空间)? [复制]

2024-05-05

我试图找出运行我的应用程序的 Android 手机上的可用磁盘空间。有没有办法以编程方式执行此操作?

Thanks,


示例:获取人类可读的大小,如 1 Gb

字符串内存 = bytesToHuman(totalMemory())

/*************************************************************************************************
Returns size in bytes.

If you need calculate external memory, change this: 
    StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
to this: 
    StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());        
**************************************************************************************************/
    public long totalMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());   
        long   total  = (statFs.getBlockCount() * statFs.getBlockSize());
        return total;
    }

    public long freeMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
        long   free   = (statFs.getAvailableBlocks() * statFs.getBlockSize());
        return free;
    }

    public long busyMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());   
        long   total  = (statFs.getBlockCount() * statFs.getBlockSize());
        long   free   = (statFs.getAvailableBlocks() * statFs.getBlockSize());
        long   busy   = total - free;
        return busy;
    }

将字节转换为人类可读格式(如 1 Mb、1 Gb)

    public static String floatForm (double d)
    {
       return new DecimalFormat("#.##").format(d);
    }


    public static String bytesToHuman (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 "???";
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找 Android 上剩余的可用存储空间(磁盘空间)? [复制] 的相关文章

随机推荐

  • 收据褪色部分可以恢复吗?

    我有一些包含一些扫描收据的文件 我需要使用 OCR 从中提取文本 由于收据上打印的文字在一段时间后会褪色 导致收据上的某些文字不清晰 影响OCR结果 褪色单词的一些示例 有什么方法可以恢复褪色的部分 以便提高 OCR 结果吗 我在OpenC
  • SQL 与 LINQ 性能 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MATLAB 中的抗锯齿线和标记

    您好 我在 MATLAB 中有一张图像 我希望这条线是平滑的 看看从 0 4 到 0 8 的线 这太可怕了 当在图中使用 LineSmoothing on 运算符时 我得到了这个 我在线条上做得很好 但它也使标记变得平滑 而且它们太可怕了
  • 调用“DisplayManagerGlobal.getDisplayInfo()”会导致应用程序中的应用程序无响应 (ANR)

    显然 应用程序中的某些内容从不同线程 主线程和绑定器线程 调用该方法 这会导致内部 ANR 它经常发生 我不知道它发生在哪里 因为我无法在模拟器或我拥有的测试设备上重现它 该应用程序的作用 它是一个应用程序储物柜应用程序 它在应用程序覆盖层
  • Jenkins 安排代理节点可用性

    我们有许多机器希望用作 Jenkins 的代理节点 但仅限于特定的时间间隔 即不在工作时间 是否可以配置一个代理节点作为特定时间范围内构建的代理 例如 周一至周五晚上 10 点至凌晨 5 点 周六和周日全天 In the 从机配置面板 选择
  • const 或 ref 或 const ref 或 value 作为 setter 函数的参数

    恒定性 class MyClass private std string m parameter 按值传递 void MyClass SetParameter std string parameter m parameter paramet
  • 在 Windows 中使用 OpenAI API 密钥时出现问题

    我必须在自定义数据集上微调 OpenAI 模型 我已经创建了 jsonl 格式的数据集 我在 Windows 命令行上使用以下命令 set OPENAI API KEY
  • 使用 Python3 与 HDFS 交互的最佳模块是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我看到有 hdfs3 snakebite 和其他一些 哪一个支持最好且最全面 据我所知 可能性并不像人们想象的那么多 但我建议使用官方的Pyth
  • 表、TR各2个循环、PHP、HTML

    我有一个 html 表 我使用一些循环来获取一些数据 该数据以这种方式显示 tr td Data td tr next loop 但我不希望它每 2 个甚至 3 个循环关闭表行 tr 所以数据可能如下所示 tr td Data td td
  • 使用矩阵参数创建 GET 请求

    我将使用的网络服务需要矩阵参数 http tester com v1 customers lastname Jackson firstname Tim bookingreference 7Y9UIY 而不是通常的 http tester c
  • RadioButton 和 DropDownList 的 MVC 服务器端验证

    使用 ASP NET Core 2 2 Razor Pages 我正在探索将单选按钮和下拉列表绑定到页面模型 很多人都在询问客户端验证以 使其正常工作 我的问题是 当我查看这段代码时 绑定引擎是否正在执行任何服务器端检查 foreach v
  • 从 java servlet 运行长进程的最佳方法是什么?

    我想问从 java servlet 运行长进程的最佳方法是什么 我有一个网络应用程序 当客户端发出请求时 它会运行一个 servlet 该 servlet 应该从请求中获取一些参数 然后运行一个进程 这个过程可能需要很长时间 所以我需要单独
  • 使用列模数的更简洁方法

    我目前有一个人员列表 我已将其分为两列 但在完成代码后 我一直想知道是否有更有效或更干净的方法来完成同样的事情 echo table class area list tr Loop users within areas divided up
  • NSTimer 每分钟运行一次,但在第一秒运行

    我有使用 NSTimer 每分钟运行一次的经验 例如 NSTimer scheduledTimerWithTimeInterval 60 0 target self selector Selector everyMinute userInf
  • WPF - 从 UserControl 发出命令时 CanExecute 不会触发

    我有一个按钮条用户控件 我想在我的大多数表单上使用它 我添加了如下命令 public ICommand Create get return buttonCreate Command set buttonCreate Command valu
  • 检查 docker 在 Gitlab CICD 管道中运行

    我在用着亚搏体育appGitlab CI CD https docs gitlab com ee ci README html构建 Node 服务器的 Docker 镜像 我想知道是否有办法测试它docker run图像的质量还可以 我们很
  • jupyter 笔记本幻灯片:默认跳过

    使用 Jupyter 制作幻灯片时 有没有办法滑轨类型 set to Skip对于新单元格 默认情况下 我的解决方法满足你的要求 创建一个空的 跳过 幻灯片并输入 Esc键 C V V V 复制并粘贴许多空的 跳过 幻灯片
  • Python Pandas to_sql,如何创建带有主键的表?

    我想使用 Pandas 的 to sql 函数创建一个 MySQL 表 该函数有一个主键 在 mysql 表中拥有主键通常是件好事 如下所示 group export to sql con db name config table grou
  • 如何使用参数重定向

  • 如何查找 Android 上剩余的可用存储空间(磁盘空间)? [复制]

    这个问题在这里已经有答案了 我试图找出运行我的应用程序的 Android 手机上的可用磁盘空间 有没有办法以编程方式执行此操作 Thanks 示例 获取人类可读的大小 如 1 Gb 字符串内存 bytesToHuman totalMemor