SharedPreference和FIleInputStream/FileOutputStream 2種儲存方式

來源:互聯網
上載者:User

 


特點:


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')");

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.