首页 > 解决方案 > 如何在android中获得可用空间

问题描述

我正在使用以下方法来查找我的外部和内部目录的可用/可用空间。它返回给我 4 GB 的内部存储器和 3.9 GB 的外部存储器。但是当我转到手机的故事部分时,它显示 3.7 GB 可用空间。为什么会出现这种不匹配。

 long freeBytesInternal = new File(ctx.getFilesDir().getAbsoluteFile().toString()).getFreeSpace();
   long freeBytesExternal = new File(ctx.getExternalFilesDir(null).toString()).getFreeSpace();

标签: android

解决方案


要查找可用的内部存储器大小:-

public static String getAvailableInternalMemorySize() {
    File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSizeLong();
    long availableBlocks = stat.getAvailableBlocksLong();
    return formatSize(availableBlocks * blockSize);
}

 For External memory size:- 
   public static String getAvailableExternalMemorySize() {

        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSizeLong();
        long availableBlocks = stat.getAvailableBlocksLong();
        return formatSize(availableBlocks * blockSize);
}

public static String formatSize(long size) {
    String suffix = null;

    if (size >= 1024) {
        suffix = "KB";
        size /= 1024;
        if (size >= 1024) {
            suffix = "MB";
            size /= 1024;
        }
    }

    StringBuilder resultBuffer = new StringBuilder(Long.toString(size));

    int commaOffset = resultBuffer.length() - 3;
    while (commaOffset > 0) {
        resultBuffer.insert(commaOffset, ',');
        commaOffset -= 3;
    }

    if (suffix != null) resultBuffer.append(suffix);
    return resultBuffer.toString();
}

推荐阅读