Android文件操做的模式

android數據存儲與訪問java

Android爲數據存儲提供了以下5種方式:android

  1. 文件(I/O)數據庫

  2. SharedPreferences(參數)數組

  3. SQLite數據庫瀏覽器

  4. 內容提供者(Content provider)緩存

  5. 網絡網絡


文件保存: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- 表示能被其餘應用讀、寫。不能執行;

相關文章
相關標籤/搜索