Android重溫--檔案儲存
今天回憶一下Android五種儲存方式之”檔案儲存“。上次的部落格中我們回憶了-SharedPreferencesd的儲存和讀取。因為其是一種輕量級的儲存方式,只能儲存基本資料型別,無法儲存圖片等資料。所以我們回想一下“檔案儲存”,看看它可以實現哪些功能!
一、檔案操作
1.注意
(1)如同Linux一樣通過路徑方式指定檔案。
(2)Stream方式訪問檔案方法仍然適用。
(3)注意檔案的訪問許可權。
2.檔案儲存和SharedPreferences儲存的區別
(1)檔案儲存,儲存的是複雜資料,SharedPreferences只能儲存基本資料型別。
(2)檔案儲存分為內部空間和外部儲存空間儲存
3.檔案儲存-使用內部空間儲存
(1)使用Internal Storage儲存
(2)內部訪問許可權是私有的
(3)應用解除安裝後,資料刪除。
4.內部儲存的使用場景
(1)儲存私有的data
(2)儲存較小的資料–內部空間有限
(3)儲存必須的data–重要資料
5.使用內部儲存的基本程式碼語法和方法呼叫
(1)寫檔案–獲取outputstream—-
/*contenxt.openFileOutput(String name,int mode);
第一個引數是檔案的名字,第二個引數是檔案的訪問許可權
/*返回的例項為FileOutputStream的操作例項
(2)讀檔案–獲取InputStream
/*Context.openFileInput(String name)
引數為儲存的檔名稱
/*返回的例項為FileInPutStream例項
6.特點
(1)name是檔名,實際的路徑位置為/data/data/<–packagename–>/file/<–name–>
(2)如同Java的操作檔案方法一樣進行讀寫,注意需要捕獲異常,資料讀取猴和寫入後記得要close()
7.程式碼的實現demo
package com.zes.base.mydalytext.activity;
import android.app.Activity;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.zes.base.mydalytext.R;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileActivity extends Activity implements View.OnClickListener{
private Button save_btn,load_btn;
private EditText content_et,content_btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file);
Init();
save_btn.setOnClickListener(this);
load_btn.setOnClickListener(this);
}
public void Init(){
save_btn = (Button) findViewById(R.id.save_btn);
load_btn = (Button) findViewById(R.id.load_btn);
content_et = (EditText) findViewById(R.id.content_et);
content_btn2 = (EditText) findViewById(R.id.content_et2);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.save_btn :
String data = content_et.getText().toString();
if (data==null||data.length()==0){
Toast.makeText(FileActivity.this,"請輸入資料",Toast.LENGTH_SHORT).show();
}else{
try {
OutputStream os = openFileOutput("text",0);
String buffer = data;
os.write(buffer.getBytes());
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
case R.id.load_btn :
try {
InputStream is = openFileInput("text");
StringBuffer sb = new StringBuffer();
int c = 0;
while( (c=is.read())!=-1){
sb.append((char)c);
}
content_btn2.setText(sb);
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
}
XML的佈局實現大家就自己實現吧,實現的截圖如下:
當輸入資料點選儲存資料的後進行儲存,點選下載資料後資料進行下載:截圖如下:
儲存下載資料
今天的實現程式碼有點簡單基本就是這個意思,大家要了解檔案儲存的原理和基本操作語法,但是大家一定要記得當進行資料的寫和讀的操作結束後關閉該操作流。