Android內存和SD卡工具類

jopen 11年前發布 | 29K 次閱讀 Android Android開發 移動開發

package com.example.testandroid;

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