所有的安卓裝置都有外部儲存和內部儲存,這兩個名稱**於安卓的早期裝置,那個時候的裝置內部儲存確實是固定的,而外部儲存確實是可以像u盤一樣移動的。
在後來的裝置中,很多中高階機器都將自己的機身儲存擴充套件到了8g以上,他們將儲存在概念上分成了"內部internal" 和"外部external" 兩部分,但其實都在手機內部。所以不管安卓手機是否有可移動的sdcard,他們總是有外部儲存和內部儲存。最關鍵的是,我們都是通過相同的api來訪問可移動的sdcard或者手機自帶的儲存(外部儲存)。
外部儲存雖然概念上有點複雜,但也很好區分,你把手機連線電腦,能被電腦識別的部分就一定是外部儲存。
從邏輯意義上來說,data
目錄就是就是就是手機的內部儲存,而mnt
或者storage
目錄下的sdcard
目錄就是外部儲存。如果是手機記憶體的外部儲存被稱為機身外部儲存,外接的sd卡則稱之為外部儲存。
在android系統中,根據呼叫的系統api介面,有3種目錄可以給我們寫入檔案:
一,應用私有儲存(內部儲存)
1,獲取方式:
context.getfiledir():
獲取內建儲存下的檔案目錄,可以用來儲存不能公開給其他應用的一些敏感資料如使用者個人資訊。
context.getcachedir():
獲取內建儲存下的快取目錄,可以用來儲存一些快取檔案如,當內建儲存的空間不足時將系統自動被清除。
2,絕對路徑:
context.getfiledir():
/data/data/應用包名/files/
[6.0以下]
/data/user/0/應用包名/files/
[6.0以上]
=[cocos2dx下的getwritablepath()]
context.getcachedir():
/data/data/應用包名/cache/
[6.0以下]
/data/user/0/應用包名/cache/
[6.0以上]
3,寫許可權:不需要申請。
下面的清除資料
和清楚快取
,如下圖所示。
二,應用擴充套件儲存(內建的外部儲存)
1,獲取方式:
context.getexternalfilesdir()
:獲取內建外部儲存
上的檔案目錄。
context.getexternalcachedir()
:獲取內建外部儲存上的快取目錄。
2,絕對路徑:
context.getexternalfilesdir()
:sdcard/android/data/應用包名/files/
context.getexternalcachedir()
:sdcard/android/data/應用包名/cache/
3,寫許可權:api < 19:需要申請;api >= 19:不需要申請。
"android.permission.write_external_storage";
"android.permission.read_external_storage"
android 6.0以後系統,就不再需要使用者授權了。
清除快取:刪除快取資料,即getcachedir()與getexternalcachedir()。
清除資料:刪除所有資料,即getfilesdir()、getcachedir()、getexternalfilesdir(null)、getexternalcachedir()。
三,公共儲存(sd卡外部儲存)
1,獲取方式:
environment.getexternalstoragedirectory()
2,絕對路徑:sdcard/你設定的資料夾名字/
3,寫許可權:需要申請。
感謝原作者的辛勤勞作:
許可權適配之sd卡寫入/
android檔案儲存
每個應用程式包都會有乙個私有的儲存資料的目錄,只有屬於該包的應用程式才有許可權寫入該目錄,其絕對路徑 data data 包名 目錄。除了私有資料目錄,應用程式還能讀寫sdcard。檔案系統中其他系統目錄,第三方應用程式是不可寫。建立資料夾 file destdir new file data da...
android檔案儲存
這在英文中本不會產生歧義,但是當我們翻譯為中文之後,前兩個都簡稱為記憶體,於是,混了。以前寫的乙個都是在sd卡根目錄直接新建了乙個 image 目錄,來儲存快取的,但是如果適配到android6.0,我們就需要彈出對話方塊給使用者,來申請write external storage許可權 3.公共儲...
修改jupyter儲存檔案位置
在cmd中輸入命令jupyter notebook generate config 可以看到生成檔案的路徑,就是jupy notebook config.py 按照路徑c user adminstrator.jupyter 開啟配置檔案 jupy notebook config.py 找到改為 修改...