Android 儲存直接選取

來源:互聯網
上載者:User

標籤:ram   static   pat   public   比較   str   存在   otp   結果   

Android能用來儲存的地方有兩個,一個是手機內建的儲存空間,一個是外置的SD卡,內建的儲存空間一般比較小,所以應用的緩衝建議儲存在外置的SD卡中。 
在Android系統中如何獲得儲存的路徑呢?

public static void getRootPath(Context context) {        Log.d("ExternalDirectory->", Environment.getExternalStorageDirectory().getPath());        Log.d("ExternalCacheDir->", context.getExternalCacheDir().getPath());        Log.d("CacheDir->", context.getCacheDir().getPath());        Log.d("FilesDir->", context.getFilesDir().getPath());    }

以上對應的輸出結果為

ExternalDirectory->: /storage/emulated/0 ExternalCacheDir->: /storage/emulated/0/Android/data/zhuwentao.com.pathdemo/cache CacheDir->: /data/data/zhuwentao.com.pathdemo/cache FilesDir->: /data/data/zhuwentao.com.pathdemo/files

應用的緩衝建議儲存在通過getExternalCacheDir().getPath()擷取的路徑中,這裡的zhuwentao.com.pathdemo會根據你的應用程式套件組合名不同會有差別,存在這個路徑,主要有以下幾個好處 
一:該路徑是在SD卡中,所以不用擔心手機內建儲存空間不足,只要SD卡夠大就行。 
二:該路徑是Android系統預設的應用緩衝路徑,對應手機應用設定裡面應用詳情的“清除緩衝”和“清除資料”按鈕。 
三:當我們卸載應用時,該路徑下的資料也會被清空,這樣就避免了有些應用卸載後還有殘留資料的問題。

如果需要儲存使用者下載的資料,就不建議儲存在getExternalCacheDir()中了,可以在Environment.getExternalStorageDirectory()下建立一個檔案夾,用來儲存使用者下載的資料。

我們在選擇儲存路徑的時候,還要考慮到使用者的手機是否有SD卡,再進行選擇,通過以下代碼判斷使用者是否有SD卡:

  /**     * 擷取手機可儲存路徑     * @param context 上下文     * @return 手機可儲存路徑     */    public static String getRootPath(Context context) {        // 是否有SD卡        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)                || !Environment.isExternalStorageRemovable()) {            return context.getExternalCacheDir().getPath(); // 有        } else {            return context.getCacheDir().getPath(); // 無        }    }

如果有SD卡或者SD卡不可被移除的時候則擷取SD卡下的路徑,沒有則擷取應用程式緩衝路徑。

有時候getExternalStorageDirectory()怎麼也擷取不到外置SD卡,這是為何呢? 
在Android4.0之前Environment.getExternalStorageDirectory()擷取到的是外置SD卡路徑,而在4.0之後由於很多手機的內建記憶體已經很大了,不需要外置SD卡,所以Android就把內建的記憶體分一部分出來當作SD卡使用了,導致不同版本的Android系統擷取到的SD卡路徑會存在差異。

需要注意的是,各個手機廠商的SD卡路徑也是會存在差異的,有些手機擷取到的路徑是“/mnt/sdcard/…”,而有的擷取的是“/storage/sdcard0/…”所以絕對不能寫死SD卡的路徑。

 

Android 儲存直接選取

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.