Android內存和SD卡工具類

jopen 10年前發布 | 19K 次閱讀 Android Android開發 移動開發


import java.io.File;
import android.os.Environment;
import android.os.StatFs;

public class StorageUtil {
private static final int ERROR = -1;
public static int save_dir = 1;

// 判斷是否已經安裝SD卡  
public static boolean isSDCardExist() {  
    return android.os.Environment.getExternalStorageState().equals(  
            android.os.Environment.MEDIA_MOUNTED);  
}  

// 內存剩余空間  
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;  
}  

// 內存總空間  
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;  
}  

// SD卡剩余空間  
public static long getAvailableExternalMemorySize() {  
    if (isSDCardExist()) {  
        File path = Environment.getExternalStorageDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long availableBlocks = stat.getAvailableBlocks();  
        return availableBlocks * blockSize;  
    } else {  
        return ERROR;  
    }  
}  

// SD卡總空間  
public static long getTotalExternalMemorySize() {  
    if (isSDCardExist()) {  
        File path = Environment.getExternalStorageDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long totalBlocks = stat.getBlockCount();  
        return totalBlocks * blockSize;  
    } else {  
        return ERROR;  
    }  
}  

// 判斷SD卡下external_sd文件夾的總大小  
public static long getTotalExternal_SDMemorySize() {  
    if (isSDCardExist()) {  
        File path = Environment.getExternalStorageDirectory();  
        File externalSD = new File(path.getPath() + "/external_sd");  
        if (externalSD.exists() && externalSD.isDirectory()) {  
            StatFs stat = new StatFs(path.getPath() + "/external_sd");  
            long blockSize = stat.getBlockSize();  
            long totalBlocks = stat.getBlockCount();  
            if (getTotalExternalMemorySize() != -1  
                && getTotalExternalMemorySize() != totalBlocks* blockSize) {  
                return totalBlocks * blockSize;  
            } else {  
                return ERROR;  
            }  
        } else {  
            return ERROR;  
        }  

    } else {  
        return ERROR;  
    }  
}  

// 判斷SD卡下external_sd文件夾的可用大小  
public static long getAvailableExternal_SDMemorySize() {  
    if (isSDCardExist()) {  
        File path = Environment.getExternalStorageDirectory();  
        File externalSD = new File(path.getPath() + "/external_sd");  
        if (externalSD.exists() && externalSD.isDirectory()) {  
            StatFs stat = new StatFs(path.getPath() + "/external_sd");  
            long blockSize = stat.getBlockSize();  
            long availableBlocks = stat.getAvailableBlocks();  
            if (getAvailableExternalMemorySize() != -1  
                && getAvailableExternalMemorySize() != availableBlocks* blockSize) {  
                return availableBlocks * blockSize;  
            } else {  
                return ERROR;  
            }  

        } else {  
            return ERROR;  
        }  

    } else {  
        return ERROR;  
    }  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!