Android——SD卡工具类——SDCardUtils.java

 1 package com.xdsjs.save.utils;
 2 
 3 /**
 4  * SD卡相关的辅助类
 5  * Created by xdsjs on 2015/10/13.
 6  */
 7 
 8 import java.io.File;
 9 
10 import android.os.Environment;
11 import android.os.StatFs;
12 
13 public class SDCardUtils {
14     private SDCardUtils() {
15         /* cannot be instantiated */
16         throw new UnsupportedOperationException("cannot be instantiated");
17     }
18 
19     /**
20      * 判断SDCard是否可用
21      *
22      * @return
23      */
24     public static boolean isSDCardEnable() {
25         return Environment.getExternalStorageState().equals(
26                 Environment.MEDIA_MOUNTED);
27 
28     }
29 
30     /**
31      * 获取SD卡路径
32      *
33      * @return
34      */
35     public static String getSDCardPath() {
36         return Environment.getExternalStorageDirectory().getAbsolutePath()
37                 + File.separator;
38     }
39 
40     /**
41      * 获取SD卡的剩余容量 单位byte
42      *
43      * @return
44      */
45     public static long getSDCardAllSize() {
46         if (isSDCardEnable()) {
47             StatFs stat = new StatFs(getSDCardPath());
48             // 获取空闲的数据块的数量
49             long availableBlocks = stat.getAvailableBlocks();
50             // 获取单个数据块的大小(byte)
51             long blockSize = stat.getBlockSize();
52             return blockSize * availableBlocks;
53         }
54         return 0;
55     }
56 
57     /**
58      * 获取指定路径所在空间的剩余可用容量字节数,单位byte
59      *
60      * @param filePath
61      * @return 容量字节 SDCard可用空间,内部存储可用空间
62      */
63     public static long getFreeBytes(String filePath) {
64         // 如果是sd卡的下的路径,则获取sd卡可用容量
65         if (filePath.startsWith(getSDCardPath())) {
66             filePath = getSDCardPath();
67         } else {// 如果是内部存储的路径,则获取内存存储的可用容量
68             filePath = Environment.getDataDirectory().getAbsolutePath();
69         }
70         StatFs stat = new StatFs(filePath);
71         long availableBlocks = (long) stat.getAvailableBlocks() - 4;
72         return stat.getBlockSize() * availableBlocks;
73     }
74 
75     /**
76      * 获取系统存储路径
77      *
78      * @return
79      */
80     public static String getRootDirectoryPath() {
81         return Environment.getRootDirectory().getAbsolutePath();
82     }
83 
84 
85 }
原文地址:https://www.cnblogs.com/lr393993507/p/5771879.html