Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Andorid存儲目錄知識總結及文件操作方法封裝

Andorid存儲目錄知識總結及文件操作方法封裝

編輯:關於Android編程

Android的存儲系統有三種:

RAM(運行內存,手機斷電後數據會丟失),

ROM 就相當於我們電腦的C盤,是手機自帶的存儲空間,ROM中安裝了操作系統的所有東西,我們所說的刷機一般就是刷ROM,而且一般默認的軟件安裝都是放在這裡的,如果不是因為ROM空間不足,最好不要把程序裝在SD卡上。因為ROM的讀寫速度比SD卡快。

SD卡 也就是我們的外部存儲。


使用上我們通過android.os.Environment來獲得其路徑。

File file=Environment.getRootDirector(); //得到系統根目錄,

file.getAbsolutePath(); //得到系統根目錄的路徑。

得到的是 /system

File file1=Environment.getDataDirectroy(); //得到ROM目錄

file2.getAbsolutePath(); //得到ROM目錄的路徑。

得到的是 /data

data文件夾是android中一個非常重要的文件夾,所以一般權限是無法獲取到文件的。

FIle file3=Environment.getExteralStorageDirectroy(); //得到外部存儲的目錄

file3.getAbsolutePath(); //得到外部存儲的目錄的路徑。

要獲取SD卡首先要先確定SD卡是否裝載

boolean is=Environment.getExteralStorageState().equals(Environment.MEDIA_MOUNTED);

如果為true,則表示已裝載。其次我們在SD卡中創建文件和讀寫文件,需要相應的權限。




android默認是無法直接操作Data根目錄的,只能直接讀寫程序直接的私有目錄,也就是/data/data/Package name/files那什麼時候可以直接讀寫/data呢?當你的APP取得了超級權限,也就系統ROOT之後,那樣你的app就是應用級別的了。還需要修改mk文件中的屬性為LOCAL_CERTIFICATE :=platform

File file=Context.getFilesDir(); //獲得私有文件的目錄

file.getAbsolutePath(); //獲得私有文件的目錄路徑

得到的是 /data/data/com.example/testenvironment/files 通用的形式是 /data/data/包/files

我們如果在ROM中存儲文件,可以在files目錄下創建文件夾和文件來存儲數據。

在根據路徑(以參數形式傳入)創建目錄或文件時,需要使用到String.split函數。
函數原型:

public String[] split(String regex,int limit) 根據給定的正則表達式來拆分此字符串。

limit 拆分的次數,最終影響的是數組的長度。

如果limit大於0,那麼拆分次數最多為limit-1,且數組長度不會大於limit。

如果limit為非正,那麼拆分至不能再拆分為止,數組長度不受限.

如果limit=0,那麼拆分至不能再拆分為止,但是要將數組尾部的空字符去掉。

例如:“boo:and:foo”
參數: “o” 1 最多進行0次拆分,那麼就是原始字符串了,輸出“boo:and:foo”
參數: “o” 2 最多進行1次拆分,輸出”b“,“o:and:foo”
參數: “o” 5 最多進行4次拆分,輸出“b”,“”,“:and:f”,"",""
參數: “o” -2 最大拆分次數,輸出“b”,“”,“:and:f”,"",""
參數: “o” 0 最大拆分次數,去掉尾部空字符 “b”,“”,“:and:f”
函數原型:
public String[] split(String regex) 上面limit=0情況下的調用。

在整個Android應用開發中,我們的一些數據,如圖片,服務器端發來的數據需要緩存或保存到本地中,可以保存到ROM也可保存到SD卡中。我們需要經常訪問ROM或SD卡,在其中創建目錄或文件來存放數據。下面我封裝了在ROM/SD卡中創建目錄/文件,並在其中保存數據的方法庫。
public class FileUtil {
	
	/**
	 * 在ROM目錄下創建文件
	 * 絕對路徑(header)不存在會拋出異常
	 * @Param header 
	 *            絕對路徑,包括私有文件根路徑,如/data/data/com.testenvironment/files/meme,/meme是自己創建的存放該app數據的目錄
	 *            整個app使用的絕對路徑是一樣的,即在/data/data/PackageName/files下創建一個文件夾,該目錄需要是存在的,不存在的話,先創建文件夾
	 * @Param tail 
	 *            相對路徑,存放文件的目錄,首尾不含/,如 pictures/icon/fileName
	 * @throws IOException 
	 */
	public static void createFileOnRom(String header, String tail) throws IOException {
		//獲得絕對路徑目錄,該目錄需要是存在,不存在會拋出異常,需要提前創建
		File file=new File(header);
		if(!file.exists()){
			throw new IOException("The Header Path not exist!");
		}
		//遍歷創建不存在的文件夾
		String[] sub=tail.split("/");
		String str=header;
		for(int i=0;i<sub.length-1;i++){ str="str+&quot;/&quot;+sub[i];" file="" f="new" file(str);="" if(!f.exists()){="" f.mkdir();="" }="" 創建最終的文件="" f.createnewfile();="" **="" *="" 在sd卡中創建文件="" 絕對路徑(header)不存在會拋出異常="" @param="" header="" 絕對路徑,包括sd卡根路徑,如="" storage="" emulated="" 0="" meme,="" meme自己創建的存放該app數據的目錄="" tail="" 相對路徑,存放文件的目錄,首尾="" ,如pictures="" icon="" filename="" @throws="" ioexception="" public="" static="" void="" createfileonsd(string="" header,="" string="" tail)="" throws="" {="" 判斷是否裝載sd卡="" if(environment.getexternalstoragestate().equals(environment.media_mounted)){="" 絕對路徑必須存在="" file(header);="" if(!file.exists()){="" throw="" new="" ioexception("the="" path="" not="" exist!");="" 遍歷創建不存在文件夾="" string[]="" sub="tail.split(&quot;/&quot;);" for(int="" i="0;i
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved