获取手机剩余空间工具类

 1 import java.io.File;
 2 
 3 import com.iss.utils.LogUtil;
 4 
 5 import android.os.Environment;
 6 import android.os.StatFs;
 7 
 8 /**
 9 *  类名 
10 *  @author 王洪贺<br/>
11 *    获取手机剩余的存储空间工具类
12 *    创建日期 2014年8月1日
13 */
14 
15 public class StorageUtil {
16 
17     /**
18     *  获取sd卡剩余存储空间
19     *  @return 返回kb字节为单位的long整形数值
20     */
21     public static long readSDCard() {
22         String state = Environment.getExternalStorageState();
23         if (Environment.MEDIA_MOUNTED.equals(state)) {
24             File sdcardDir = Environment.getExternalStorageDirectory();
25             StatFs sf = new StatFs(sdcardDir.getPath());
26             long blockSize = sf.getBlockSize();
27             long blockCount = sf.getBlockCount();
28             long availCount = sf.getAvailableBlocks();
29            /* LogUtil.d("", "block大小:" + blockSize + ",block数目:" + blockCount + ",总大小:" + blockSize
30                     * blockCount / 1024 + "KB");
31             LogUtil.d("", "可用的block数目::" + availCount + ",剩余空间:" + availCount * blockSize / 1024
32                     + "KB");*/
33             return availCount * blockSize / 1024;
34         } else {
35             return 0;
36         }
37     }
38 
39     /**
40      *  获取sd卡剩余存储空间
41      *  @return 返回M字节为单位的long整形数值
42      */
43     public static long readSDCardM() {
44         return readSDCard() / 1024;
45     }
46 
47     /**
48      *  获取系统剩余存储空间
49      *  @return 返回以KB为单位的long整形数值
50      */
51     public static long readSystem() {
52         File root = Environment.getRootDirectory();
53         StatFs sf = new StatFs(root.getPath());
54         long blockSize = sf.getBlockSize();
55         long blockCount = sf.getBlockCount();
56         long availCount = sf.getAvailableBlocks();
57         /*LogUtil.d("", "block大小:" + blockSize + ",block数目:" + blockCount + ",总大小:" + blockSize
58                 * blockCount / 1024 + "KB");
59         LogUtil.d("", "可用的block数目::" + availCount + ",可用大小:" + availCount * blockSize / 1024 + "KB");*/
60         return availCount * blockSize / 1024;
61     }
62 
63     /**
64      *  获取系统剩余存储空间
65      *  @return 返回以M为单位的long整形数值
66      */
67     public static long readSystemM() {
68         return readSystem() / 1024;
69     }
70 
71     /**
72      *  判断剩余空间是否大于指定空间
73      *  @param sizeMb 以MB为单位的指定大小
74      *  @return 返回值true为有相应空间,false为小于对应空间
75      */
76     public static boolean isAvailableSpace(int sizeMb) {
77         boolean hasSpace = false;
78         long availableSpare = readSDCardM();
79         if (availableSpare > sizeMb) {
80             hasSpace = true;
81         }
82         return hasSpace;
83     }
84 
85     /**
86      *  判断剩余空间是否大于指定空间
87      *  @return 返回值true为有100M,false为小于100M
88      */
89     public static boolean isAvailableSpace() {
90         return isAvailableSpace(100);
91     }
92 }
原文地址:https://www.cnblogs.com/dongweiq/p/3906624.html