Android中文件存储有五种方式:
- 文件存储
- SharedPreferences存储
- sqllite数据库存储
- 网络存储
- ContentProvider存储
除了这五种,还可以直接把数据存储在手机的SD卡中,但是相对来说不安全。
文件存储:
文件存储是最基本的存储方式,他会原封不动的数据存储到文件里面,适合一些比较小的二进制数据或者简单的文本数据。
文件存储和IO的使用方法类似,文件存储是利用Context类中的 openFileOutPut() 来将数据存储到指定的文件中,两个参数,文件名和操作模式。其中文件名不需要路径,操作模式有两种,MODE_PRIVATE(覆盖重写)和MODE_APPEND(追加内容),还有另外两种在已经被废弃。
private void saveData(String data) throws IOException {
try(FileOutputStream fileOutputStream = openFileOutput("data",MODE_PRIVATE);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream))) {
writer.write(data);
}
}
数据存储在/data/data/<package name>/files/
读取文件
读取文件是用Context类中的openFileInput() 的方法,接收一个参数就是文件名,之后他会自己去文件夹读取文件,并返回一个FileInputStream对象,之后用IO流的办法就可以把文件中的数据读出来了。
SharedPreferences存储
这个存储方式是采用key-value的存储方式,它提供了string,set,int,long,float,boolean六种数据类型,最终数据是以xml形式进行存储。他适用于保存一些简单的数据,比如用户配置等。
Android中主要有三种方式获得SharedPreferences对象
1、Context 类中的getSharedPreferences()
两个参数,第一个是文件名,第二个是操作模式
2、Activity类中的getPreferences()
只有操作模式一个参数,文件名自动以当前的活动为文件名。
3、PreferenceManager类中的getDefaultSharedPreferences()
一个参数,Context
文件存储在/data/data/<package name>/shared_prefs/
目录下。
拿到SharedPreferences对象后首先调用edit()方法获得一个SharedPreferences.Editor对象,然后向其中用putXXX()的方法添加数据,最后用apply()的方法完成数据提交。
putXXX()中两个参数,第一个是key,第二个是value。getXXX()同理。读数据的时候用同样的方法获得SharedPreferences.Editor对象来getXXX()就可以了。