Android設備中的內部存儲和外部存儲
時間:2018-09-27 來源:未知
所有的Android設備均有兩個文件存儲區域:"internal" 與 "external" 。 這兩個名稱來自于早先的Android系統,當時大多設備都內置了不可變的內存(internal storage)及一個類似于SD card(external storage)這樣的可卸載的存儲部件。之后有一些設備將"internal" 與 "external" 都做成了不可卸載的內置存儲,雖然如此,但是這一整塊還是從邏輯上有被劃分為"internal"與"external"的。只是現在不再以是否可卸載進行區分了。 下面列出了兩者的區別:
本文引用地址://www.17old.cn/emb/Column/7559.html
Internal storage:
1.總是可用的
2.這里的文件默認只能被我們的app所訪問。
3.當用戶卸載app的時候,系統會把internal內該app相關的文件都清除干凈。
4.Internal是我們在想確保不被用戶與其他app所訪問的佳存儲區域。
External storage:
1.并不總是可用的,因為用戶有時會通過USB存儲模式掛載外部存儲器,當取下掛載的這部分后,就無法對其進行訪問了。
2.是大家都可以訪問的,因此保存在這里的文件可能被其他程序訪問。
3.當用戶卸載我們的app時,系統僅僅會刪除external根目錄(getExternalFilesDir())下的相關文件。
4.External是在不需要嚴格的訪問權限并且希望這些文件能夠被其他app所共享或者是允許用戶通過電腦訪問時的佳存儲區域。
保存文件到External storage:
為了寫數據到external storage, 必須在你manifest文件中請求WRITE_EXTERNAL_STORAGE權限:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
因為external storage可能是不可用的,比如遇到SD卡被拔出等情況時。因此在訪問之前應對其可用性進行檢查。我們可以通過執行 getExternalStorageState()來查詢external storage的狀態。若返回狀態為MEDIA_MOUNTED, 則可以讀寫。
保存文件到Internal storage:
保存文件到internal storage時,可以通過執行下面兩個方法之一來獲取合適的目錄作為 FILE 的對象:
getFilesDir() : 返回一個File,代表了我們app的internal目錄。
getCacheDir() : 返回一個File,代表了我們app的internal緩存目錄。請確保這個目錄下的文件能夠在一旦不再需要的時候馬上被刪除,并對其大小進行合理限制,例如1MB 。系統的內部存儲空間不夠時,會自行選擇刪除緩存文件。
同樣可以使用File() 構造器在那些目錄下創建一個新的文件,如下:
File file = new File(context.getFilesDir(), filename);
之后我們就可以通過IO流對文件進行讀寫操作了。

