android獲取手機內部儲存空間和外部儲存空間
阿新 • • 發佈:2018-11-13
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
原文: http://blog.163.com/hero_213/blog/static/39891214201162123236660/ 該程式碼片段可以讓我們獲取internal和external的儲存空間大小。private static final int ERROR = - 1 ;
/** * SDCARD是否存 */ public static boolean externalMemoryAvailable () { return android . os . Environment . getExternalStorageState (). equals ( android . os . Environment . MEDIA_MOUNTED ); }
/** * 獲取手機內部剩餘儲存空間 * @return */ 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 ; }
/** * 獲取手機內部總的儲存空間 * @return */ 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 ; }
/** * 獲取SDCARD剩餘儲存空間 * @return */ public static 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 ; } }
/** * 獲取SDCARD總的儲存空間 * @return */ public static 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 ; } } } 1.硬體上的 block size, 應該是"sector size",linux的扇區大小是512byte 2.有檔案系統的分割槽的block size, 是"block size",大小不一,可以用工具檢視 3.沒有檔案系統的分割槽的block size,也叫“block size”,大小指的是1024 byte 4.Kernel buffer cache 的block size, 就是"block size",大部分PC是1024 5.磁碟分割槽的"cylinder size",用fdisk 可以檢視。 我們這裡的block size是第二種情況,一般SD卡都是fat32的檔案系統,block size是4096. 這樣就可以知道手機的內部儲存空間和sd卡儲存空間的總大小和可用大小了。