Android數據存儲與訪問之文件數據存儲

文件的保存與讀取
文件數據存儲在Android中讀取/寫入文件的方法,與Java中實現I/O的程序是完全一樣的,提供了openFileInput()和openFileOutput()方法來讀取設備上的文件。
這裏我們來實現一個列子:
當點擊保存按鈕的時候,會將文件保存到設備中。
 1. 新建一個Android項目,編寫佈局文件(其中文本內容的輸入框控件高度爲3行文字的高度android:minLines="3"),啓動模擬器查看佈局,我們首先要爲按鈕添加單擊的點擊事件,打開MainActivity,實例化按鈕,爲按鈕添加點擊事件處理對象(OnClickListener類型),提供內部類實現OnClickListener接口,查找兩個本文框,取得用戶輸入的內容;接下去就要實現本件保存,這個過程是業務操作的過程,根據MVC的設計風格,我們把業務類FileService寫到業務層去,添加save(filename,filecontent)方法;利用Toast提示用戶保存結果。

接下去我們編寫代碼實現sava()方法實現保存文件,這裏用的是java中的I/O技術。

I/O技術實現文件保存:首先獲得輸出流對象(context.openOuput(name, mode))第一個參數是文件名稱(這裏不能帶路徑),第二個是文件的操作模式(這裏我們選擇的是私有操作模式context.MODE_PRIVATE),然後調用write()方法保存文件。[openFileInput()和openFileOutput()方法讀取的是自帶存儲空間]



創建的文件默認保存在/data/data/<package name>/files目錄下。大家可以打開文件資源管理器進行查看。

      2.接下去我們在業務類中編寫一個方法從文件中讀取數據(read(filename));

利用openFileInput(name)方法得到文件輸入流對象,默認在/data/data/<package name>/files目錄尋找文件

最後再從文件中讀取數據。


3.引入單元測試環境(在日誌pull解析xml中有介紹),編寫測試方法,進行測試,並在日誌控制檯查看結果。



4.保存數據到SDCard中(當文件比較大的時候我們一般都將保存到外存儲設備中就是SDCard中)

打開業務類,編寫保存方法,這裏我們不能使用openFileInput()方法(這個方法默認保存在自帶存儲空間); 得到要保存的文件對象new File(dirPath,name);第一個參數是sdcard在設備中的絕對路徑("/mnt/sdcard"),但是我們一般採用Environment.getExternalStorageDirectory()來獲得路徑(因爲sdcard的絕對路徑可能因爲版本的變化而變化,所以可能會有版本之間的兼容問題),在創建一個輸出流對象進行保存文件。

這裏我們還必須用到2個權限:在SDCard中創建與刪除文件權限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

在SDCard寫入數據權限    

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


業務類中的代碼


附:文件的操作模式

1.Context.MODE_PRIVATE:爲默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋源文件的內容;

2.Context.MODE_APPEND:該模式會檢查文件是否存在,存在的話新寫入的內容會追加到原文件中,否則就創建新文件,也是私有數據,只能被應用本身訪問;

3.MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;

4.MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入;

如果希望文件被其他應用讀和寫,可傳入:Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE。

如對以上有任何疑問都可回覆或留言相互討論!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章