转自:http://blog.csdn.net/u013718120/article/details/50265643

今天贴一个工具类,主要是获取RAM、ROM、SDCARD空间大小的还有转换帮助方法。直接上代码,一看便知。哈哈

package com.mob.getsdandphone;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.text.DecimalFormat;import android.app.ActivityManager;import android.content.Context;import android.os.Environment;import android.os.StatFs;public class FileSizeUtil {    private static final int ERROR = -1;    /**     * SDCARD是否存     */    public static boolean externalMemoryAvailable() {        return android.os.Environment.getExternalStorageState().equals(                android.os.Environment.MEDIA_MOUNTED);    }    /**     * 获取手机内部剩余存储空间     *      * @return     */    public static long getAvailableInternalMemorySize() {        File path = Environment.getDataDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSize();        long availableBlocks = stat.getAvailableBlocks();        return availableBlocks * blockSize;    }    /**     * 获取手机内部总的存储空间     *      * @return     */    public static long getTotalInternalMemorySize() {        File path = Environment.getDataDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSize();        long totalBlocks = stat.getBlockCount();        return totalBlocks * blockSize;    }    /**     * 获取SDCARD剩余存储空间     *      * @return     */    public static 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;        }    }    /**     * 获取SDCARD总的存储空间     *      * @return     */    public static 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;        }    }    /**     * 获取系统总内存     *      * @param context 可传入应用程序上下文。     * @return 总内存大单位为B。     */    public static long getTotalMemorySize(Context context) {        String dir = "/proc/meminfo";        try {            FileReader fr = new FileReader(dir);            BufferedReader br = new BufferedReader(fr, 2048);            String memoryLine = br.readLine();            String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:"));            br.close();            return Integer.parseInt(subMemoryLine.replaceAll("\\D+", "")) * 1024l;        } catch (IOException e) {            e.printStackTrace();        }        return 0;    }    /**     * 获取当前可用内存,返回数据以字节为单位。     *      * @param context 可传入应用程序上下文。     * @return 当前可用内存单位为B。     */    public static long getAvailableMemory(Context context) {        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();        am.getMemoryInfo(memoryInfo);        return memoryInfo.availMem;    }    private static DecimalFormat fileIntegerFormat = new DecimalFormat("#0");    private static DecimalFormat fileDecimalFormat = new DecimalFormat("#0.#");    /**     * 单位换算     *      * @param size 单位为B     * @param isInteger 是否返回取整的单位     * @return 转换后的单位     */    public static String formatFileSize(long size, boolean isInteger) {        DecimalFormat df = isInteger ? fileIntegerFormat : fileDecimalFormat;        String fileSizeString = "0M";        if (size < 1024 && size > 0) {            fileSizeString = df.format((double) size) + "B";        } else if (size < 1024 * 1024) {            fileSizeString = df.format((double) size / 1024) + "K";        } else if (size < 1024 * 1024 * 1024) {            fileSizeString = df.format((double) size / (1024 * 1024)) + "M";        } else {            fileSizeString = df.format((double) size / (1024 * 1024 * 1024)) + "G";        }        return fileSizeString;    }}

更多相关文章

  1. Android面试题目(10) 内存泄露
  2. Android(安卓)Audio AudioTrack::write函数
  3. Android(安卓)之 在内存中读/取数据
  4. Android中dip与px之间单位转换
  5. android 性能优化 小技巧
  6. Android性能优化(二)——context 引起的内存问题
  7. Android消息传递机制Handler完全解析之4内存泄漏等问题
  8. Android开发优化的几点建议
  9. android内存管理等

随机推荐

  1. BDLocationListener doesn't work
  2. android简单一级购物车
  3. Method not found using DigestUtils in
  4. android——01
  5. Android的手势
  6. Android(安卓)SurfaceView vs TextureVie
  7. Android(安卓)圆角位图
  8. StickyScrollView解说
  9. Android(安卓)WebView选择本地文件上传
  10. android 圆角编辑框