Android 開發 存儲目錄的詳解


  • 簡介

  •   Android設備,有3個地方的文件存儲位置,他們分別是:
  •   內部存儲空間(用戶無法瀏覽到此目錄)
  •   外部存儲空間(就是手機自身的文件管理目錄,用戶可以瀏覽)
  •   SD卡的存儲空間(需要插入T卡)
  •   SharedPreferences目錄
  •   存儲數據庫DB目錄

 

  

 

內部存儲空間

  內部存儲空間的獲取都需要使用Context.

  方法

  getFilesDir(); 

    對應內部存儲的路徑為: data/data/packagename/files

String filesDir = getApplicationContext().getFilesDir().getPath(); 

  getCacheDir();

    對應內部存儲的路徑為:data/data/packagename/cache ,cache是緩存的意思,這些文件一旦設備內部存儲空間不足時,這些保存在cache下的文件會刪除,不要指望系統為你刪除,一般需要自己設定閾值,一旦系統滿時,系統也會刪掉cache!----  一般聊天記錄都會使用

String cacheDir = getApplicationContext().getCacheDir().getPath();

  處理文件方法

  openFileInput();和openFileOutput();

  這2個方法對data/data/packagename/files目錄下操作文件

  fileList();

  方法是用來列出該data/data/packagename/files目錄下的所有文件

  deleteFile(String name);

  用來刪除該files目錄下的文件

 

外部存儲空間

  外部存儲空間有2種不同目錄的文件路徑,他們分別需要使用Context和Environment來獲取,下面我們逐個介紹獲取方式與對應路徑

  需要使用Context獲取方法

  使用上下文獲取的路徑主要是/android/data/你的包名/      此目錄下的路徑

  getExternalCacheDir();

    對應外部存儲路徑:/storage/emulated/0/Android/data/packagename/cache  此方法為獲取cache緩存文件

String externalCacheDir = getApplicationContext().getExternalCacheDir().getPath();

  getExternalCacheDirs();

    對應外部存儲路徑:/storage/emulated/0/Android/data/packagename/cache  此方法為獲取cache下所以文件數組集合

File[] externalCacheDirs = getApplicationContext().getExternalCacheDirs();

   getExternalFilesDir(String type);

    對應外部存儲路徑:/storage/emulated/0/Android/data/packagename/files    此方法獲取files文件下的指定文件,這里的參數可以傳入null也可以傳入一個文件名

String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getPath();

  getExternalFilesDirs(String type);

    對應外部存儲路徑:/storage/emulated/0/Android/data/packagename/files  此方法獲取files文件指定目錄的文件數組集合,這里的參數可以傳入null也可以傳入一個文件名

File[] externalFilesDirs = getApplicationContext().getExternalFilesDirs(null);

   getExternalMediaDirs();

    對應外部存儲路徑:/storage/emulated/0/Android/media/packagename  此方法獲取包名路徑下的文件數組集合

 

File[] externalMediaDirs = getApplicationContext().getExternalMediaDirs();

 

  需要使用Environment獲取方法

   getExternalStorageState();

    獲取sd卡狀態,此方法返回的是String類型,一共有以下幾種類型:

  • MEDIA_UNKNOWN   SD卡未知
  • MEDIA_REMOVED    SD卡移除
  • MEDIA_UNMOUNTED  SD卡未安裝
  • MEDIA_CHECKING   SD卡檢查中,剛裝上SD卡時
  • MEDIA_NOFS            SD卡為空白或正在使用不受支持的文件系統
  • MEDIA_MOUNTED   SD卡安裝
  • MEDIA_MOUNTED_READ_ONLY  SD卡安裝但是只讀
  • MEDIA_SHARED   SD卡共享
  • MEDIA_BAD_REMOVAL  SD卡移除錯誤
  • MEDIA_UNMOUNTABLE  存在SD卡但是不能掛載,例如發生在介質損壞
     String externalStorageState = Environment.getExternalStorageState();
        if (externalStorageState.equals(Environment.MEDIA_MOUNTED)){
            //sd卡已經安裝
        }

   getExternalStorageDirectory();

    對應外部存儲路徑:/storage/emulated/0  此方法獲取外部存儲根目錄路徑

String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();

  getExternalStoragePublicDirectory(String type);

    獲取外部存儲的共享文件夾路徑(就是拍照文件夾/下載文件夾/音樂文件夾這些系統的共享文件夾),使用的時候參數必需攜帶路徑類型,且不能為null.

    以相機DCIM目錄為例子對應獲取的路徑為:/storage/emulated/0/DCIM

        String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();
  • DIRECTORY_MUSIC  音樂目錄
  • DIRECTORY_PODCASTS  播客目錄
  • DIRECTORY_RINGTONES  鈴聲目錄
  • DIRECTORY_ALARMS   警報(鬧鍾/定時器)鈴聲目錄
  • DIRECTORY_NOTIFICATIONS  提示音目錄
  • DIRECTORY_PICTURES  圖片目錄
  • DIRECTORY_MOVIES  電影目錄
  • DIRECTORY_DOWNLOADS  下載目錄
  • DIRECTORY_DCIM   相機拍照或錄像文件的存儲目錄
  • DIRECTORY_DOCUMENTS   文件文檔目錄

 

系統存儲空間

   getRootDirectory();

    對應獲取系統分區根路徑:/system  此方法是獲取系統根目錄路徑,返回包含核心Android操作系統的“系統”分區的根目錄,始終以只讀方式顯示和安裝。

 

String rootDirectory = Environment.getRootDirectory().getPath();

 

  getDataDirectory();

    對應獲取用戶數據目錄路徑:/data  返回用戶數據目錄

 

String dataDirectory = Environment.getDataDirectory().getPath();

 

  getDownloadCacheDirectory();

    對應獲取用戶緩存目錄路徑:/data/cache  返回下載/緩存內容目錄

 

String downloadCacheDirectory = Environment.getDownloadCacheDirectory().getPath();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM