notfatboy 发表于 2013-2-7 09:22:38

查询存储空间的代码

以下代码片段转载自Android Snippets
该代码片段可以让我们获取internal和external的存储空间大小。
   1. import java.io.File;   2.      3. import android.os.Environment;   4. import android.os.StatFs;   5.      6. public class MemoryStatus {   7.      8.   static final int ERROR = -1;   9.         10.   static public boolean externalMemoryAvailable() {    11.         return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);    12.   }    13.         14.   static public long getAvailableInternalMemorySize() {    15.         File path = Environment.getDataDirectory();    16.         StatFs stat = new StatFs(path.getPath());    17.         long blockSize = stat.getBlockSize();    18.         long availableBlocks = stat.getAvailableBlocks();    19.         return availableBlocks * blockSize;    20.   }    21.         22.   static public long getTotalInternalMemorySize() {    23.         File path = Environment.getDataDirectory();    24.         StatFs stat = new StatFs(path.getPath());    25.         long blockSize = stat.getBlockSize();    26.         long totalBlocks = stat.getBlockCount();    27.         return totalBlocks * blockSize;    28.   }    29.         30.   static public long getAvailableExternalMemorySize() {    31.         if(externalMemoryAvailable()) {    32.             File path = Environment.getExternalStorageDirectory();    33.             StatFs stat = new StatFs(path.getPath());    34.             long blockSize = stat.getBlockSize();    35.             long availableBlocks = stat.getAvailableBlocks();    36.             return availableBlocks * blockSize;    37.         } else {    38.             return ERROR;    39.         }    40.   }    41.         42.   static public long getTotalExternalMemorySize() {    43.         if(externalMemoryAvailable()) {    44.             File path = Environment.getExternalStorageDirectory();    45.             StatFs stat = new StatFs(path.getPath());    46.             long blockSize = stat.getBlockSize();    47.             long totalBlocks = stat.getBlockCount();    48.             return totalBlocks * blockSize;    49.         } else {    50.             return ERROR;    51.         }    52.   }    53.         54.   static public String formatSize(long size) {    55.         String suffix = null;    56.         57.         if (size >= 1024) {    58.             suffix = "KiB";    59.             size /= 1024;    60.             if (size >= 1024) {    61.               suffix = "MiB";    62.               size /= 1024;    63.             }    64.         }    65.         66.         StringBuilder resultBuffer = new StringBuilder(Long.toString(size));    67.         68.         int commaOffset = resultBuffer.length() - 3;    69.         while (commaOffset > 0) {    70.             resultBuffer.insert(commaOffset, ',');    71.             commaOffset -= 3;    72.         }    73.         74.         if (suffix != null)    75.             resultBuffer.append(suffix);    76.         return resultBuffer.toString();    77.   }    78. }
页: [1]
查看完整版本: 查询存储空间的代码