android - 如何获取Android sdcard上的可用空间?

标签 android environment sd-card

我正在使用 Environment.getExternalStorageDirectory() 创建文件,在创建和存储文件之前我需要知道是否有足够的可用空间。

如果您可以引用 Android Ref 文档,那也会很有帮助。

最佳答案

您必须使用 StatFs类(class)。这是从源代码到手机上的“设置”应用程序中如何使用它的示例。

        if (status.equals(Environment.MEDIA_MOUNTED)) {
        try {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            long availableBlocks = stat.getAvailableBlocks();

            mSdSize.setSummary(formatSize(totalBlocks * blockSize));
            mSdAvail.setSummary(formatSize(availableBlocks * blockSize) + readOnly);

            mSdMountToggle.setEnabled(true);
            mSdMountToggle.setTitle(mRes.getString(R.string.sd_eject));
            mSdMountToggle.setSummary(mRes.getString(R.string.sd_eject_summary));

        } catch (IllegalArgumentException e) {
            // this can occur if the SD card is removed, but we haven't received the 
            // ACTION_MEDIA_REMOVED Intent yet.
            status = Environment.MEDIA_REMOVED;
        }

关于android - 如何获取Android sdcard上的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686974/

相关文章:

android - 如何在android中使用onTouch事件在 Canvas 上获取文本

android - ionic - 更改本地通知插件中的图标的正确方法是什么?

android - Android 布局的 Arc Drawable

c# - MonoDroid 值得付出努力吗?

android - 如何以编程方式在 sdcard 中创建一个可以直接在 Windows 和手机中显示的文件夹

eclipse - 通过 eclipse 运行 ant 找不到环境变量,但是通过终端运行 ant 很好

ruby-on-rails - 如何使用 Seed.rb 有选择地填充开发和/或生产数据库?

linux - $MKLROOT 未定义(Ubuntu)

Android:如何知道何时卸载SD卡

android - 使图片仅对我的 Android 应用程序可用