1. 程式人生 > >android獲取手機內部儲存空間和外部儲存空間

android獲取手機內部儲存空間和外部儲存空間

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                原文: http://blog.163.com/hero_213/blog/static/39891214201162123236660/ 該程式碼片段可以讓我們獲取internal和external的儲存空間大小。 

import java . io . File ;                                                                                                
import android . os . Environment ;     import android . os . StatFs ;          public class StorageUtil
{
    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卡儲存空間的總大小和可用大小了。
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述