android數據存儲與訪問java
Android爲數據存儲提供了以下5種方式:android
文件(I/O)數據庫
SharedPreferences(參數)數組
SQLite數據庫瀏覽器
內容提供者(Content provider)緩存
網絡網絡
文件保存:ide
public class FileService{ private Context context; public FileService(Context context){ this.context = context; } /** *保存文件 *@param filename 文件名稱 *@param content 文件內容 */ public void save(String filename,String content) throws Exception{ FileOutputStream = context.openFileOutput(filename,Context.MODE_PRIVATE); //Context.MODE_PRIVATE 私有操做模式:建立出來的文件只能被本應用訪問,其餘應用沒法訪問該文件, //另外採用私有操做模式建立的文件,寫入文件中的內容會覆蓋原文件內容 outStream.write(content.getBytes()); outStream.close(); } }
幾種文件的操做模式:this
Context.MODE_PRIVATE 私有操做模式:這是默認的模式。建立出來的文件只能被本應用訪問,其餘應用沒法訪問該文件,另外採用私有操做模式建立的文件,寫入文件中的內容會覆蓋原文件內容spa
Context.MODE_APPEND 追加操做模式:該模式會檢查文件是否存在,存在就往文件追加內容,不然流建立新文件,一樣只能被應用訪問。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其餘應用是否有權限讀寫該文件。
Context.MODE_WORLD_READABLE:表示當前文件能夠被其餘應用讀取;
Context.MODE_WORLD_WRITEABLE:表示當前文件能夠被其餘應用寫入;
若是但願文件被其餘應用讀和寫,能夠同時傳入兩個,至關因而傳入了‘3’;
即:openFileOutput(filename,Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
由於自己這兩個模式表示的就是一個int的1和2,直接寫3固然是沒有問題的。
文件讀取:
/** *讀取文件內容 *@param filename 文件名稱 *@return 文件內容 */ public void read(String filename) throws Exception{ FileInputStream inStream = context.openFileInput(filename); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0;//inStream.read(buffer)的返回值,返回值是你讀進緩衝區的字符個數 while((len = inStream.read(buffer)) != -1){ outStream.write(buffer,0,len);//獲取buffer數組什麼範圍的數據 } byte[] data = outStream.toByteArray(); return new String(data); }
讀取文件內容:
若是要打開存放在/data/data/<package name>/file目錄應用私有的文件,可使用Activity提供的openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("luhan.txt");
或者直接用文件的絕對路徑:
File file = new File("data/data/com.richbond.demo/files/luhan.txt");
注意:上面文件路徑中的"com.richbond.demo"爲應用所在的包。移植代碼的時候要替換成當前應用的包。
Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用於獲取/data/data/<package name>/cache目錄
之後作應用的時候能夠專門把緩存文件放到cache文件夾中。
getFilesDir()方法用於獲取/data/data/<package name>/files目錄
文件瀏覽器中文件的權限表示:
- rw- rw- rw- 這個是一個權限表示,分別是 本應用,同組應用,其餘應用。
第一個-表示一個文件,若是是一個目錄則是d;
第一個rw- 表示能被這個應用讀、寫。不能執行;
第二個rw- 表示能被同組應用讀、寫。不能執行;
第三個rw- 表示能被其餘應用讀、寫。不能執行;