如何获得Android sdcard上的可用空间?

mob*_*bob 3 environment android sd-card

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

如果你能引用Android Ref文档,那也会有所帮助.

Nat*_*ann 6

您必须使用StatFs类.以下是从源代码到手机上的"设置"应用程序中使用它的示例.

        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;
        }
Run Code Online (Sandbox Code Playgroud)