Android檔案存放

2021-06-19 01:38:43 字數 3519 閱讀 6639

導師需要我為學校做乙個地圖定位,需要事先將檔案放置於sdcard中,所以在網上找了個例項,以下的**經過測試是可行的,望與後來者共勉。

sdcard路徑獲取:string path = environment.getexternalstoragedirectory().getpath();

對於應用攜帶的靜態資料,可以放置在應用的assets目錄或者res,raw目錄下。

對於assets目錄下的靜態資料,存在當檔案最大支援1mb的侷限,讀取方式如下:

1inputstream is = getassets().open("***.xx");

對於res,raw目錄下的檔案,可以通過如下方式讀取:

1inputstream is = resources.openrawresource.(r.raw.***);

android支援在sd卡上的應用私有目錄,在froyo版本後,通過getexternalfilesdir()可以獲得具體路徑。該路徑依賴與應用的包名,如果你包為hello.file那麼sd開上的應用私有目錄為\mnt\sdcard\android\data\hello.file\files\.如果希望儲存在sd卡上的公共目錄下,可以通過getexternalstoragepublicdirectory()公共目錄的具體路徑視需要儲存的檔案型別而定。

sd上的應用需要的快取較大,也可以在sd卡上建立快取目錄,在froyo版本後,通過getexternalcachedir()可以獲取應用在sd卡上的快取路徑。在使用sd卡目錄時,需注意sd卡是否掛載,可通過environment.getexternalstoragestate()方法進行判斷,如果返回值為envirnment.media_mounted表示sd卡處於掛載狀態,可以放心使用。

sqlite的中的事務處理。當需要一次性修改多個資料時,建議通過sqlite的事務處理進行批量處理,這有利於提高執行的效率。事務處理相關的方法如下:

1publicvoidbegintransaction();

2publicvoidbegintransactionwithlistener(sqlitetransactionlistener transactionlistener);

3publicvoidendtransaction();

4publicvoidintransaction();

5publicvoidsettransactionsuccessful();

此外還有使用sharedpreferences來儲存的xml檔案,究其本質其實還是值對。android中xml檔案更多的用來維護應用或者系統的配置檔案,我們在開發中一般用sharedpreferences也是儲存一些應用的配置資訊,記錄使用者的某些操作,例如:使用者是不是第一次進入應用,使用者是否選擇了儲存使用者名稱和密碼和使用者的某些偏好設定等等,android根據配置資訊是否對其他應用開放,sharedpreferences提供了兩種許可權,mode_private和mode_world_readable。該資料存放在\data\data\包.名\shared_prefs資料夾下,擴充套件名為.xml。資料以這種形式儲存:

獲取sharedpreferences的方法:(該變數一般作為全域性變數,放到activity的oncreate方法中初始化,我遇到有人在方法中獲取不到這個變數的錯誤,該成全域性的就獲取到了。)

1sharedpreferences sp = getsharedpreferences("儲存xml檔案的名字",mode_private);

獲得資料的方法: 

1string msg = sp.getstring("儲存的key","如果沒儲存則會獲得的資料");

msg就是你儲存的資料,如果沒有儲存,那麼獲得就是你後面設定的預設資料 

對其編輯的方法: 

1editor editor = sp.edit();

2editor.putstring(key, value);

3editor.commit();//一定不要忘記提交,否則就儲存不到檔案中。

如果希望配置資訊對其他應用開放,

在設定許可權時,可使用 

mode_world_readable,

其他應用要獲得該配置資訊時,必須先獲取相應的上下文: 

1context =createpackagecontext("全包名",context_context_ignore_security);

2sharedpreferences sp = context.getsharedpreferences("儲存xml檔案的名字",mode_private);

在實際開發中,一定要對獲得context進行是否為null的判斷,有些時候我們打不開,或因許可權不足,或因為應用已經被使用者刪除。

需要說明的是,在preferenceactivity中內建了對sharedpreferences的支援。如果希望進一步了解的使用者可以檢視一下類似listpreference的用法。 

其次android還提供了內部儲存方式,

開發者可以將資料儲存在應用的私有空間中,避免其他程式訪問。其許可權在context下,有:

等。內部 

儲存所在的目錄為:/date/date/包.名/files

寫入資料可讀資料 也很簡單: 

private

void createfile()  else   

}  // 目錄存在,則將apk中raw中的需要的文件複製到該目錄下

file file = new file(filepath);  

if (!file.exists())   

system.out.println("已經建立該檔案");  

fos.close();// 關閉流

ins.close();  

}  } catch (exception e)   

}  

接下來跟平常檔案一樣讀入 就ok了。

Android快取檔案的存放

在android手機裡面,快取的位置分為兩類,一類是internal storage,即內部儲存,另外一類是external storage,即外部儲存。比較老的手機,有乙個手機內部儲存,還有乙個sd卡儲存,就是分別對應這兩種儲存位置,因為以前的sd卡是可以擴充套件的,即可拆卸的,所以可以用是否可拆...

檔案存放問題

這兩周工作,做了很多事情,但是回想起來覺得也沒做什麼,電腦裡幾個資料夾一堆檔案,有的是上個禮拜改的,有的是反覆修改的,有的甚至都不知道是用來做什麼的了。雖然我有分類,我分成了以前別人做的 之前我做過的 現在我做的,這三個部分。但是,還是會遇到讓我覺得檔案放置太亂的問題,原因就是有時候我竟找不到我腦子...

LINUX檔案目錄存放檔案說明

bin bin是binary的縮寫。這個目錄存放著最經常使用的命令。boot這裡存放的是啟動linux時使用的一些核心檔案,包括一些連線檔案以及映象檔案。dev dev是device 裝置 的縮寫。該目錄下存放的是linux的外部裝置,在linux中訪問裝置的方式和訪問檔案的方式是相同的。etc這個...