Android中StatFs获取系统/sdcard存储(剩余空间)大小

StatFs 一个模拟linux df命令的一个类,获得SD卡和 手机内存的使用情况

            StatFs 常用方法:
  1. getAvailableBlocks()
  2. 解释:返回 Int ,获取当前可用的存储空间
  3. getBlockCount()
  4. 解释:返回 Int ,获取该区域可用的文件系统
  5. getBlockSize()
  6. 解释:返回 Int ,大小,以字节为单位,一个文件系统
  7. getFreeBlocks()
  8. 解释:返回 Int ,该块区域剩余的空间
  9. restat(String path)
  10. 解释:执行一个由该对象所引用的文件系统




package com.orgcent.util ;

import java.io.File ;

import android.os.Environment ;
import android.os.StatFs ;

public class MemoryStatus {
    static final int ERROR = - 1 ;

    /**
     * 外部存储是否可用
     * @return
     */

    static public boolean externalMemoryAvailable ( ) {
        return android. os. Environment. getExternalStorageState ( ). equals (
                android. os. Environment. MEDIA_MOUNTED ) ;
    }

    /**
     * 获取手机内部可用空间大小
     * @return
     */

    static public long getAvailableInternalMemorySize ( ) {
        File path = Environment. getDataDirectory ( ) ;
        StatFs stat = new StatFs (path. getPath ( ) ) ;
        long blockSize = stat. getBlockSize ( ) ;
        long availableBlocks = stat. getAvailableBlocks ( ) ;
        return availableBlocks * blockSize ;
    }

    /**
     * 获取手机内部空间大小
     * @return
     */

    static public long getTotalInternalMemorySize ( ) {
        File path = Environment. getDataDirectory ( ) ;
        StatFs stat = new StatFs (path. getPath ( ) ) ;
        long blockSize = stat. getBlockSize ( ) ;
        long totalBlocks = stat. getBlockCount ( ) ;
        return totalBlocks * blockSize ;
    }

    /**
     * 获取手机外部可用空间大小
     * @return
     */

    static public long getAvailableExternalMemorySize ( ) {
        if (externalMemoryAvailable ( ) ) {
            File path = Environment. getExternalStorageDirectory ( ) ;
            StatFs stat = new StatFs (path. getPath ( ) ) ;
            long blockSize = stat. getBlockSize ( ) ;
            long availableBlocks = stat. getAvailableBlocks ( ) ;
            return availableBlocks * blockSize ;
        } else {
            return ERROR ;
        }
    }

    /**
     * 获取手机外部空间大小
     * @return
     */

    static public long getTotalExternalMemorySize ( ) {
        if (externalMemoryAvailable ( ) ) {
            File path = Environment. getExternalStorageDirectory ( ) ;
            StatFs stat = new StatFs (path. getPath ( ) ) ;
            long blockSize = stat. getBlockSize ( ) ;
            long totalBlocks = stat. getBlockCount ( ) ;
            return totalBlocks * blockSize ;
        } else {
            return ERROR ;
        }
    }

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

        if (size >= 1024 ) {
            suffix = "KiB" ;
            size /= 1024 ;
            if (size >= 1024 ) {
                suffix = "MiB" ;
                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 ( ) ;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值