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 }