zxl_ong 发表于 2013-1-28 18:40:02

android手机内部存储空间和外部存储空间获取代码

以下代码片段转载自Android Snippets

该代码片段可以让我们获取internal和external的存储空间大小。

import java.io.File;                                                                                                

import android.os.Environment;   
import android.os.StatFs;   
   
public class MemoryStatus {   

private static final String TAG = "***MemoryStatus***";
   
    static final int ERROR = -1;   
      
    static public boolean externalMemoryAvailable() {   
      return android.os.Environment.getExternalStorageState()
      .equals(android.os.Environment.MEDIA_MOUNTED);   
    }   
      
    static public long getAvailableInternalMemorySize() {   
      File path = Environment.getDataDirectory();   
      StatFs stat = new StatFs(path.getPath());   
      long blockSize = stat.getBlockSize();   
      long availableBlocks = stat.getAvailableBlocks();   
      return availableBlocks * blockSize;   
    }   
      
    static public long getTotalInternalMemorySize() {   
      File path = Environment.getDataDirectory();   
      StatFs stat = new StatFs(path.getPath());   
      long blockSize = stat.getBlockSize();   
      long totalBlocks = stat.getBlockCount();   
      return totalBlocks * blockSize;   
    }   
      
    static public long getAvailableExternalMemorySize() {   
      if(externalMemoryAvailable()) {   
            File path = Environment.getExternalStorageDirectory();   
            StatFs stat = new StatFs(path.getPath());   
            long blockSize = stat.getBlockSize();   
            long availableBlocks = stat.getAvailableBlocks();   
            return availableBlocks * blockSize;   
      } else {   
            return ERROR;   
      }   
    }   
      
    static public long getTotalExternalMemorySize() {   
      if(externalMemoryAvailable()) {   
            File path = Environment.getExternalStorageDirectory();   
            StatFs stat = new StatFs(path.getPath());   
            long blockSize = stat.getBlockSize();   
            long totalBlocks = stat.getBlockCount();   
            return totalBlocks * blockSize;   
      } else {   
            return ERROR;   
      }   
    }   
      
    static public String formatSize(long size) {   
      String suffix = null;   
      
      if (size >= 1024) {   
            suffix = "KiB";   
            size /= 1024;   
            if (size >= 1024) {   
                suffix = "MiB";   
                size /= 1024;   
            }   
      }   
      
      StringBuilder resultBuffer = new StringBuilder(Long.toString(size));   
      
      int commaOffset = resultBuffer.length() - 3;   
      while (commaOffset > 0) {   
            resultBuffer.insert(commaOffset, ',');   
            commaOffset -= 3;   
      }   
      
      if (suffix != null)   
            resultBuffer.append(suffix);   
      return resultBuffer.toString();   
    }   
}
页: [1]
查看完整版本: android手机内部存储空间和外部存储空间获取代码