Android中的檔案儲存體技術

來源:互聯網
上載者:User

Android中的檔案儲存體技術

檔案儲存體是每個系統都應該具有的功能,Android系統採用Java語言開發,所以它的檔案儲存體功能基本上和J2SE一樣的。為什麼會引入檔案儲存體?因為大檔案、圖片等我們若只儲存在手機中很有限,一般都是用一個外存放裝置進行儲存。好了今天我們就講講用編程的方式在Android系統中進行儲存。

檔案儲存體的位置

一般檔案預設儲存在/data/data/<包>/files/***.***(針對我們開發的APK的時候),當然我們也可以儲存在儲存卡上(這個時候需要在androidManifest.xml 設定檔案的操作許可權)。







openFileOutput() 寫入

在Activity組件中提供了此方法用於寫入檔案資料,我們先看以下代碼,再做解釋:

public void store() {
try {
//擷取檔案的輸出資料流
FileOutputStream out=this.openFileOutput("test.txt",Context.MODE_WORLD_READABLE);
//將介面上textboox1控制項的值寫入到輸出檔案流中
out.write(textboox1.getText().toString().getBytes());
//關閉檔案流,資料儲存成功
out.close();


} catch (FileNotFoundException e) {


return;


}


catch (IOException e){

return ;


}

}

從代碼中我們可以看到openFileOutput()有兩個參數,第一個是檔案名稱,第二個則是檔案的操作許可權。它有以下操作許可權:

Context.MODE_PRIVATE=0:為預設操作模式,代表該檔案是私人資料,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容,如果想把新寫入的內容追加到原檔案中。可以使用Context.MODE_APPEND;
Context.MODE_APPEND = 32768:模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案;
Context.MODE_WORLD_READABLE = 1:表示當前檔案可以被其他應用讀取;
Context.MODE_WORLD_WRITEABLE= 2:表示當前檔案可以被其他應用寫入;

如果想需要有讀寫權限,需要將Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE表示。

openFileInput() 讀取

Activity組件提供了讀取的方法,預設的檔案在/data/data/<包>/files/下,執行個體代碼如下:

public void onload()


{


try {
//檔案輸入資料流
FileInputStream in=this.openFileInput("test.txt");


ByteArrayOutputStream stream=new ByteArrayOutputStream();


byte[] buffer=new byte[1024];


int length=-1;
//讀取資料並放在byte數組中
while((length=in.read(buffer))!=-1) {
//寫入byte檔案流
stream.write(buffer,0,length);


}

stream.close();
in.close();
textboot1.setText(stream.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();

}
catch (IOException e){


return ;


}
}

SDCard 資料存放區

前面已經講到資料在儲存到外部裝置時候,需要設定其操作許可權。以下的操作方式是我們在實際項目開發過程中常用到的。

//1.用於擷取SDCard的狀態,如果手機裝有SDCard,並且可以進行讀寫,那麼方法返回的狀態等於Environment.MEDIA_MOUNTED
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//2.擷取SDCard目錄
File sdCardDir = Environment.getExternalStorageDirectory();
//3.在外部裝置上建立 擷取檔案
File saveFile = new File(sdCardDir, “test.txt”);
//檔案儲存體位置在/sdcard/test.txt
//等價於 File saveFile = new File("/sdcard/a.txt");

//4.檔案輸出資料流
FileOutputStream outStream = new FileOutputStream(saveFile);

//5.寫入資料
outStream.write("test".getBytes());

//6.關閉檔案輸出資料流
outStream.close();
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.