第五章 SharedPreferences与文件管理

一、SharedPreferences的使用

Android中提供了三种实现数据持久功能的方式:文件存储、SharedPreference存储、数据库存储;

如何修改——修改就是直接用put把以前的数据覆盖掉;
如何删除——remove相同key的值;

commit和apply的区别:commit是同步操作,apply是异步操作.一般建议用apply,因为和网络、IO相关的操作都用异步,后台写数据也要另开线程。

regeisterOnSharedPreferenceChanged可以设置监听器,SharedPreferences改变的时候,会告诉我们是那个key改变了。

封装:将SharedPreference的put、get等操作代码,封装成一个接口,使代码整体更整洁而且更方便。

二、文件管理

1. 将数据储存到文件中:Context类中提供了一个openFileOutput()方法,用于将数据存储到指定的文件中。第一个参数是文件名,因为所有问价都是默认存储到/data/data/<package name>/files/目录下的。第二个参数是文件的操作模式,主要有两种模式,MODE_PRIVATE(默认的操作模式,表示当指定同样文件名时,所写入的内容将会覆盖原文件的内容)和MODE_APPEND(表示如果该文件已存在就往文件里追加内容,不存在创建文件)。

2. 如何将数据写入文件:
String string = "I am Cool";
try{
            FileOutputStream fileOutputStream = openFileOutput("test2.txt",Context.MODE_PRIVATE);
           try {
               fileOutputStream.write(string.getBytes());
               fileOutputStream.close();
           }catch (IOException e){
               e.printStackTrace();
           }
        }catch (IOException e){
            e.printStackTrace();
        }
首先通过openFileOutput()方法能够得到一个FileOutPutStream对象,然后写入字节流写入数据。
3. 内部存储Internal storage、外部存储External storage 
使用外部存储时,要注册权限:
 android:installLocation="preferExternal"
4. getFilesDir():返回一个File,代表了我们app的internal目录;
    getCacheDir():返回一个File,代表了我们app的internal缓存目录;
5. res中存储文件和assets中存储文件的区别:
相同点:res、assets里的文件都是直接打在包里,不会被编译成二进制;
不同点:assets里原封不动,res里的文件会被映射成一个id存储在R.java中,我们可以通过id索引去访问。

拾遗:

1、arg 参数、interface接口、binary二进制
2、二进制I/O类中的所有方法都声明为抛出java.io.IOExceptioin或java.io.IOException的子类;
3、在Windows中目录的分隔符是反斜杠(\)。但是在Java中,反斜杠是一个特殊的字符,应该写成(\\)的形式;、
4、在程序中,不要直接使用绝对文件名,应该使用相对文件名,才能适用于多个操作系统;
5、编写和硬件有关的代码时,都要在mainfest中注册权限。(如下所示为注册上网权限)
<uses-permission android:name="android.permission.INTERNET"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值