Android 开发 存储目录的详解
-
簡(jiǎn)介
- Android設(shè)備,有3個(gè)地方的文件存儲(chǔ)位置,他們分別是:
- 內(nèi)部存儲(chǔ)空間(用戶無法瀏覽到此目錄)
- 外部存儲(chǔ)空間(就是手機(jī)自身的文件管理目錄,用戶可以瀏覽)
- SD卡的存儲(chǔ)空間(需要插入T卡)
- SharedPreferences目錄
- 存儲(chǔ)數(shù)據(jù)庫(kù)DB目錄
?
?
內(nèi)部存儲(chǔ)空間
內(nèi)部存儲(chǔ)空間的獲取都需要使用Context.
方法
getFilesDir();
對(duì)應(yīng)內(nèi)部存儲(chǔ)的路徑為: data/data/packagename/files
String filesDir = getApplicationContext().getFilesDir().getPath();getCacheDir();
對(duì)應(yīng)內(nèi)部存儲(chǔ)的路徑為:data/data/packagename/cache ,cache是緩存的意思,這些文件一旦設(shè)備內(nèi)部存儲(chǔ)空間不足時(shí),這些保存在cache下的文件會(huì)刪除,不要指望系統(tǒng)為你刪除,一般需要自己設(shè)定閾值,一旦系統(tǒng)滿時(shí),系統(tǒng)也會(huì)刪掉cache!---- ?一般聊天記錄都會(huì)使用
String cacheDir = getApplicationContext().getCacheDir().getPath();處理文件方法
openFileInput();和openFileOutput();
這2個(gè)方法對(duì)data/data/packagename/files目錄下操作文件
fileList();
方法是用來列出該data/data/packagename/files目錄下的所有文件
deleteFile(String name);
用來刪除該files目錄下的文件
?
外部存儲(chǔ)空間
外部存儲(chǔ)空間有2種不同目錄的文件路徑,他們分別需要使用Context和Environment來獲取,下面我們逐個(gè)介紹獲取方式與對(duì)應(yīng)路徑
需要使用Context獲取方法
使用上下文獲取的路徑主要是/android/data/你的包名/????? 此目錄下的路徑
getExternalCacheDir();
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0/Android/data/packagename/cache 此方法為獲取cache緩存文件
String externalCacheDir = getApplicationContext().getExternalCacheDir().getPath();getExternalCacheDirs();
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0/Android/data/packagename/cache 此方法為獲取cache下所以文件數(shù)組集合
File[] externalCacheDirs = getApplicationContext().getExternalCacheDirs();? getExternalFilesDir(String type);
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0/Android/data/packagename/files ?? 此方法獲取files文件下的指定文件,這里的參數(shù)可以傳入null也可以傳入一個(gè)文件名
String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getPath();getExternalFilesDirs(String type);
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0/Android/data/packagename/files 此方法獲取files文件指定目錄的文件數(shù)組集合,這里的參數(shù)可以傳入null也可以傳入一個(gè)文件名
File[] externalFilesDirs = getApplicationContext().getExternalFilesDirs(null);? getExternalMediaDirs();
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0/Android/media/packagename 此方法獲取包名路徑下的文件數(shù)組集合
?
File[] externalMediaDirs = getApplicationContext().getExternalMediaDirs();?
需要使用Environment獲取方法
? getExternalStorageState();
獲取sd卡狀態(tài),此方法返回的是String類型,一共有以下幾種類型:
- MEDIA_UNKNOWN?? SD卡未知
- MEDIA_REMOVED??? SD卡移除
- MEDIA_UNMOUNTED? SD卡未安裝
- MEDIA_CHECKING?? SD卡檢查中,剛裝上SD卡時(shí)
- MEDIA_NOFS??????????? SD卡為空白或正在使用不受支持的文件系統(tǒng)
- MEDIA_MOUNTED?? SD卡安裝
- MEDIA_MOUNTED_READ_ONLY? SD卡安裝但是只讀
- MEDIA_SHARED?? SD卡共享
- MEDIA_BAD_REMOVAL? SD卡移除錯(cuò)誤
- MEDIA_UNMOUNTABLE??存在SD卡但是不能掛載,例如發(fā)生在介質(zhì)損壞
? getExternalStorageDirectory();
對(duì)應(yīng)外部存儲(chǔ)路徑:/storage/emulated/0 此方法獲取外部存儲(chǔ)根目錄路徑
String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();getExternalStoragePublicDirectory(String type);
獲取外部存儲(chǔ)的共享文件夾路徑(就是拍照文件夾/下載文件夾/音樂文件夾這些系統(tǒng)的共享文件夾),使用的時(shí)候參數(shù)必需攜帶路徑類型,且不能為null.
以相機(jī)DCIM目錄為例子對(duì)應(yīng)獲取的路徑為:/storage/emulated/0/DCIM
String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();- DIRECTORY_MUSIC? 音樂目錄
- DIRECTORY_PODCASTS? 播客目錄
- DIRECTORY_RINGTONES? 鈴聲目錄
- DIRECTORY_ALARMS?? 警報(bào)(鬧鐘/定時(shí)器)鈴聲目錄
- DIRECTORY_NOTIFICATIONS? 提示音目錄
- DIRECTORY_PICTURES? 圖片目錄
- DIRECTORY_MOVIES? 電影目錄
- DIRECTORY_DOWNLOADS? 下載目錄
- DIRECTORY_DCIM?? 相機(jī)拍照或錄像文件的存儲(chǔ)目錄
- DIRECTORY_DOCUMENTS?? 文件文檔目錄
?
系統(tǒng)存儲(chǔ)空間
? getRootDirectory();
對(duì)應(yīng)獲取系統(tǒng)分區(qū)根路徑:/system 此方法是獲取系統(tǒng)根目錄路徑,返回包含核心Android操作系統(tǒng)的“系統(tǒng)”分區(qū)的根目錄,始終以只讀方式顯示和安裝。
?
String rootDirectory = Environment.getRootDirectory().getPath();?
getDataDirectory();
對(duì)應(yīng)獲取用戶數(shù)據(jù)目錄路徑:/data 返回用戶數(shù)據(jù)目錄
?
String dataDirectory = Environment.getDataDirectory().getPath();?
getDownloadCacheDirectory();
對(duì)應(yīng)獲取用戶緩存目錄路徑:/data/cache 返回下載/緩存內(nèi)容目錄
?
String downloadCacheDirectory = Environment.getDownloadCacheDirectory().getPath();?
?
posted on 2019-03-08 14:22?觀心靜 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/guanxinjing/p/10495568.html
總結(jié)
以上是生活随笔為你收集整理的Android 开发 存储目录的详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gym101808 E
- 下一篇: 【洛谷P1833】樱花