天天看點

Android:StatFs類 擷取系統/sdcard存儲空間資訊

在存儲檔案時,為了保證有充足的存儲空間大小,通常需要知道系統内部或者sdcard的剩餘存儲空間大小,這裡就需要用到StatFs類。

1. 判斷 SDCard 是否存在,并且是否具有可讀寫權限 

/**

* 外部存儲是否可用 (存在且具有讀寫權限)

* @return

*/ 

staticpublicboolean isExternalStorageAvailable() { 

    return Environment.getExternalStorageState().equals( 

            Environment.MEDIA_MOUNTED); 

2.擷取手機系統可用空間大小

* 擷取手機内部可用空間大小

staticpubliclong getAvailableInternalMemorySize() { 

    File path = Environment.getDataDirectory(); 

    StatFs stat = new StatFs(path.getPath()); 

    long blockSize = stat.getBlockSize(); 

    long availableBlocks = stat.getAvailableBlocks(); 

    return availableBlocks * blockSize; 

3.擷取手機内部總空間大小

* 擷取手機内部空間大小

staticpubliclong getTotalInternalMemorySize() { 

    File path = Environment.getDataDirectory();//Gets the Android data directory 

    long blockSize = stat.getBlockSize();      //每個block 占位元組數 

    long totalBlocks = stat.getBlockCount();   //block總數 

    return totalBlocks * blockSize; 

4.擷取手機外部可用空間大小、擷取手機外部總空間大小

    * 擷取手機外部可用空間大小

    * @return

    */ 

   staticpubliclong getAvailableExternalMemorySize() { 

       if (isExternalStorageAvailable()) { 

           File path = Environment.getExternalStorageDirectory();//擷取SDCard根目錄 

           StatFs stat = new StatFs(path.getPath()); 

           long blockSize = stat.getBlockSize(); 

           long availableBlocks = stat.getAvailableBlocks(); 

           return availableBlocks * blockSize; 

       } else { 

           return -1; 

       } 

   } 

   /**

    * 擷取手機外部總空間大小

   staticpubliclong getTotalExternalMemorySize() { 

           File path = Environment.getExternalStorageDirectory(); //擷取SDCard根目錄 

           long totalBlocks = stat.getBlockCount(); 

           return totalBlocks * blockSize; 

注意: 通路SDCard進行檔案讀寫時:

在AndroidManifest.xml中加入通路SDCard的權限如下:

<!-- 在SDCard中建立與删除檔案權限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!-- 往SDCard寫入資料權限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

接着我們在使用SDcard進行讀寫的時候 會用到Environment類下面的幾個靜态方法:

1:getDataDirectory()         擷取到Android中的data資料目錄

2:getDownloadCacheDirectory() 擷取到下載下傳的緩存目錄

繼續閱讀