SharedPreference和FIleInputStream/FileOutputStream 2种存储方式

前言:

 最近在学习中遇到了两种存储方式,2种存储方式都各有优缺点。下面将特点整理如下.


特点:

1、SharedPreference

本种存储方式只做简单的存储,如其名字一样。

优点:简单方便,适合做简单数据的快速保存

缺点:存放的文件只能在同一个包内,不能跨包引用

2、FIleInputStream/FileOutputStream

文件存储方式。此种方式可以存放比较大的文件。还可以存储到SDCARD中。可以跨包进行引用、可以存放到SDCARD上


案例Layout xml:

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种存储方式的存储和读取进行说明并未把所有逻辑代码都贴出来


存储/读取代码:

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去搜索。如果没有的话它会默认按照第二个参数进行返回。也就是空字符串””

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

源码下载地址:

http://pan.baidu.com/share/link?shareid=454757&uk=1997312776

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值