接下去我們編寫代碼實現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。
如對以上有任何疑問都可回覆或留言相互討論!!!