Android 開發 存儲目錄的詳解

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();

?

?

posted on 2019-03-08 14:22?觀心靜 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/guanxinjing/p/10495568.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394847.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據項目交付國標_在緊迫的期限內交付大型項目

大數據項目交付國標by Paul McGillivray保羅麥吉里夫瑞(Paul McGillivray) 在緊迫的期限內交付大型Web項目 (Delivering a big web project for a tight deadline) This week we launched the first phase of a large website for a fast-growing business, ‘Jump In’. The …

CentOS 安裝MySQL(rpm)提示錯誤Header V3 DSA/SHA1 Signature

提示錯誤:Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies 錯誤原因:這是由于yum安裝了舊版本的GPG keys造成的 解決辦法:后面加上--force --nodeps 原文: 摘要: CentOS安裝rpm安裝…

linux系統文件的復制,linux操作系統文件復制操作

《linux操作系統文件復制操作》由會員分享,可在線閱讀,更多相關《linux操作系統文件復制操作(5頁珍藏版)》請在人人文庫網上搜索。1、網絡操作系統”課程實驗報告名:號:業:計算機科學與技術間:2012年5月 日師:北京聯合大學-信息學院編制Linux-文件的系統…

惡意軟件偽裝“正規軍”,撕開Booster Cleaner“畫皮”下的真相

經常使用手機瀏覽器閱讀小說的用戶都知道,在瀏覽器頁面經常會出現一些推廣游戲應用、手機清理應用等應用的彈窗廣告。有時出于方便,我們也會選擇直接點開這些彈窗廣告進行應用下載。但這種行為并不安全,部分惡意應用會先偽裝成“正規軍”誘導…

python初學者代碼示例_python基礎示例

7、寫代碼 (1)實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗!_name "seven"_pwd "123"name input("username:").strip() pwd input("password:").strip()if name _…

33歲想從頭學做網頁設計_從頭開始設計精美的移動應用

33歲想從頭學做網頁設計by Harshita Arora通過Harshita Arora 從頭開始設計精美的移動應用 (Designing beautiful mobile apps from scratch) I started learning graphic design when I was 13. I learned to design websites from online courses and used to play around w…

Lucene 基礎理論 (zhuan)

http://www.blogjava.net/hoojo/archive/2012/09/06/387140.html**************************************** 1. 全文檢索系統與Lucene簡介 1.1 什么是全文檢索與全文檢索系統 全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引&#xff0…

npm使用指南

npm使用指南 作者:chszs,未經博主同意不得轉載。經許可的轉載需注明作者和博客主頁:http://blog.csdn.net/chszs npm介紹 npm全稱為Node Package Manager。是一個基于Node.js的包管理器,也是整個Node.js社區最流行、支持的第三方模…

div固定大小文字溢出自動縮小_【高并發】高并發環境下如何防止Tomcat內存溢出?看完我懂了!!

寫在前面隨著系統并發量越來越高,Tomcat所占用的內存就會越來越大,如果對Tomcat的內存管理不當,則可能會引發Tomcat內存溢出的問題,那么,如何防止Tomcat內存溢出呢?我們今天就來一起探討下這個問題。防止To…

linux下的ssh端口號修改,如何在 Linux 中更改 SSH 端口

默認情況下, SSH 偵聽端口 22 。 更改默認 SSH 端口可以降低被自動攻擊的風險,從而為服務器增加額外的安全層。和更改默認端口相比,將防火墻配置為僅允許從特定主機訪問端口 22 則更加簡單和安全。本教程介紹如何更改 Linux 中的默認 SSH 端口…

【洛谷P1833】櫻花

先說80分代碼&#xff1a;最基本的混合背包&#xff0c;判斷是完全&#xff0c;01&#xff0c;或是多重&#xff0c;再選擇。 狀態轉移方程&#xff1a;f[j]max(f[j],f[j-co[i]]v[i]); 1 #include<bits/stdc.h>2 using namespace std;3 int a[10001],c[10001],t[10001],f…

TCC分布式事務

https://github.com/changmingxie/tcc-transaction轉載于:https://www.cnblogs.com/520playboy/p/7235716.html

迭代器2

小結 凡是可作用于for循環的對象都是Iterable類型&#xff1b; 凡是可作用于next()函數的對象都是Iterator類型&#xff0c;它們表示一個惰性計算的序列&#xff1b; 集合數據類型如list、dict、str等是Iterable但不是Iterator&#xff0c;不過可以通過iter()函數獲得一個Itera…

長尾關鍵詞seo_為什么您不應該忘記長尾SEO

長尾關鍵詞seoby Ben Rudolph通過本魯道夫 為什么您不應該忘記長尾SEO (Why you shouldn’t forget about long tail SEO) A few months ago, I wrote about how I built ThingsOnReddit. It’s a site that finds the best Amazon products posted to Reddit and uses Amazon…

python調用hive與java調用區別_使用Pyhive調用

我正在使用pyhive與hive交互。在 使用下面的代碼&#xff0c;SELECT語句運行良好。在# Import hive module and connect from pyhive import hive conn hive.Connection(host"HOST") cur conn.cursor() # Import pandas import pandas as pd # Store select query …

linux gnome啟動命令,如何在Gnome Shell上自動啟動程序

登錄Gnome Shell時自動打開應用程序是提前設置工作區的好方法。在Gnome Shell上自動啟動程序的最簡單方法是使用Tweaks應用程序。在本指南中&#xff0c;我們將介紹如何安裝Gnome Tweaks應用程序以輕松配置自動程序啟動。讓我們開始吧&#xff01;通過GUI自動啟動程序默認情況下…

netstat查看linux運行的端口,查看哪些端口被打開 netstat -anp

一、查看哪些端口被打開 netstat -tnl二、關閉端口號:iptables -A OUTPUT -p tcp --dport 端口號-j DROP三、打開端口號&#xff1a;iptables -A INPUT -ptcp --dport 端口號-j ACCEPT四、保存設置service iptables save五、以下是linux打開端口命令的使用方法。nc -lp 23 &…

用戶體驗崗如何說服其他部門_為什么我們應該說服用戶更新他們的瀏覽器-這是雙贏的。...

用戶體驗崗如何說服其他部門by Alex Ewerlf由AlexEwerlf 為什么我們應該說服用戶更新他們的瀏覽器-這是雙贏的。 (Why we should convince our users to update their browsers — it’s a win-win.) Unless you’ve been living under a rock recently, you’re aware of Mel…

【JAVA并發編程實戰】3、同步容器

同步容器包括Vector和Hashtable&#xff0c;還有一些由Collections.synchronizedXxx等工廠方法創建的 1、同步容器類的問題 同步容器類都是線程安全的&#xff0c;但是有些時候還是要客戶端加鎖來保護復合操作 就比如vector的操作&#xff0c;如果又兩個方法一個獲取vector集合…

php 動態加載html內容_ThinkPHP5.1+Swoole實現的開源內容管理框架

一款支持Swoole的開源內容管理框架&#xff0c;基于ThinkPHP5.1開發&#xff0c;同時支持PHP-FPM和Swoole雙模式&#xff0c;讓WEB開發更快!主要特性更改框架協議為MIT,讓你更自由地飛基于ThinkPHP 5.1重構&#xff0c;但核心代碼兼容5.0版本&#xff0c;保證老用戶最小升級成本…