特點:
1、SharedPreference
本種儲存方式只做簡單的儲存,如其名字一樣。
優點:簡單方便,適合做簡單資料的快速儲存
缺點:存放的檔案只能在同一個包內,不能跨包引用
2、FIleInputStream/FileOutputStream
檔案儲存體方式。此種方式可以存放比較大的檔案。還可以儲存到SDCARD中。可以跨包進行引用、可以存放到SDCARD上
案例Layout xml:
[html]
Layout xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="儲存資料練習!"
android:textSize="20sp" android:textColor="#ff0000" android:id="@+id/tv_title" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="請輸入帳號" />
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/editText_Login"
android:text=""></EditText>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="請輸入密碼" />
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/editText_Password"
android:text=""></EditText>
<Button android:id="@+id/button_save" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="儲存"></Button>
<Button android:id="@+id/button_load" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="取出資料"
android:visibility="invisible"></Button>
</LinearLayout>
Layout xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="儲存資料練習!"
android:textSize="20sp" android:textColor="#ff0000" android:id="@+id/tv_title" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="請輸入帳號" />
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/editText_Login"
android:text=""></EditText>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="請輸入密碼" />
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/editText_Password"
android:text=""></EditText>
<Button android:id="@+id/button_save" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="儲存"></Button>
<Button android:id="@+id/button_load" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="取出資料"
android:visibility="invisible"></Button>
</LinearLayout>
說明:
由於本篇主要是針對2種儲存方式的儲存和讀取進行說明並未把所有邏輯代碼都貼出來
儲存/讀取代碼:
[java]
sp = this.getSharedPreferences("zhang_data", this.MODE_PRIVATE);
sp.getString("login", "");
login.setText(sp.getString("login", ""));
pass.setText(sp.getString("password", ""));
對於上面的這一塊代碼塊中,sp為SharedPreferences對象。值得一說的是當getString拿資料的時候。會按照當前的key去搜尋。如果沒有的話它會預設按照第二個參數進行返回。也就是Null 字元串””
儲存:
sp.edit()
.putString("login", String.valueOf(login.getText()))
.putString("pass", String.valueOf(pass.getText()))
.commit();
attention.setText("儲存成功!可重新開啟此程式,測試是否已經儲存資料!" +
"/n(或者在'File Explorer'視窗下-data-data-com.himi路徑下" +
"是否存在" +"了'zhanglei_data.xml')");
檔案儲存體方式:
讀取:
fis = this.openFileInput("save.zhang");
dis = new DataInputStream(fis);
login.setText(dis.readUTF());
pass.setText(dis.readUTF());
儲存:
fos = this.openFileOutput("save.zhang", this.MODE_PRIVATE);
dos = new DataOutputStream(fos);
dos.writeUTF(login.getText().toString());
dos.writeUTF(pass.getText().toString());
attention.setText("儲存成功!可重新開啟此程式,測試是" +
"否已經儲存資料!/n(或者在'File Explorer'" +
"視窗下-data-data-com.example.savestore.file路徑下" +
"是否存在了'save.zhang')");
sp = this.getSharedPreferences("zhang_data", this.MODE_PRIVATE);
sp.getString("login", "");
login.setText(sp.getString("login", ""));
pass.setText(sp.getString("password", ""));
對於上面的這一塊代碼塊中,sp為SharedPreferences對象。值得一說的是當getString拿資料的時候。會按照當前的key去搜尋。如果沒有的話它會預設按照第二個參數進行返回。也就是Null 字元串””
儲存:
sp.edit()
.putString("login", String.valueOf(login.getText()))
.putString("pass", String.valueOf(pass.getText()))
.commit();
attention.setText("儲存成功!可重新開啟此程式,測試是否已經儲存資料!" +
"/n(或者在'File Explorer'視窗下-data-data-com.himi路徑下" +
"是否存在" +"了'zhanglei_data.xml')");
檔案儲存體方式:
讀取:
fis = this.openFileInput("save.zhang");
dis = new DataInputStream(fis);
login.setText(dis.readUTF());
pass.setText(dis.readUTF());
儲存:
fos = this.openFileOutput("save.zhang", this.MODE_PRIVATE);
dos = new DataOutputStream(fos);
dos.writeUTF(login.getText().toString());
dos.writeUTF(pass.getText().toString());
attention.setText("儲存成功!可重新開啟此程式,測試是" +
"否已經儲存資料!/n(或者在'File Explorer'" +
"視窗下-data-data-com.example.savestore.file路徑下" +
"是否存在了'save.zhang')");