大家都知道Android应用中数据是非常重要的,如果一个APP没有数据那么它就不会是一个完整的应用了,当然 工具类型的应用除外。
一直很火的吃鸡游戏,王者农药你玩了吗如果你下载玩了应用之后你会发现你的手机中是不是多了很多游戏里看到的图片呢?这些图片就用到了我们今天要说的数据存储啦,其实这些应用还有一些数据你是看不到 存到了你的文件中或者应用数据库以及Sharedpreferences中,如果你手机Root了的话是可以去应用文件中查看到的哦。
好啦,进入正题~
1、Sharedpreferences存储它是支持存储java基本数据类型的,不支持自定义数据类型、 只能当前应用内数据共享、操作简单。一般存储简单数据 他存储的格式是以键值对的方式存储 例如我们应用中有些标识性的变量都可以存储到Sharepreferences中。例如你吃鸡游戏中的身份 性别 都可以存储在share中。那它是如何操作的呢 如下
存储String类型的数据:
public static voidsetString(Context context,String key,
String value) {
SharedPreferences preferences = context.
getSharedPreferences(spName,MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key,value);
editor.commit();
}
那么如果我要存储性别的数据 就可以调用 context当前的上下文对象
setString(context,"sex","女")
其中spName代表这个SharedPreferences的存储名称(文件名)得到Editor对象之后 在里面存放数据 editor.putString(key,value)是用来存放你的数据 key是唯一标识 value是你要放的值 前面也说了它支持java基本类型 也就说不仅仅只是有putString方法,还有如下方法
前面说的是存储,那么取值呢 就相对简单多了。
public staticStringgetString(Context context,String key) {
SharedPreferences sharedPreferences = context.
getSharedPreferences(spName,MODE_PRIVATE);
returnsharedPreferences.getString(key,"");
}
如果我要取性别的值是什么 就可以调用
String value = getString(context,"sex"); 这就取到啦
2、文件存储(读和写 内部文件和外部文件) 内部文件存储的路径在/data下
data下还有很多子文件。这也是私有的方式 只能当前应用访问。外部文件存储在SD卡上,例如你手机相册里的吃鸡的图片都是存储在SD卡上的。如果你要用到文件存储的话 记住先再清单文件中申请读写的权限 android6.0手动申请权限
//存入的权限
//读取数据权限
那怎么用呢,内部存储的话 Android提供很多函数可获取 都是根据Context进行获取。那今天我就说一个context.openFileInput函数context.openFileInput获取的路径是/data/data/您的包名/file/下的文件 我们取数据之前先存储数据
fileName 存储的文件名 string 为存储的数据 其中需要注意的是Context.MODE_PRIVATE模式 是清除之前的数据再写入新数据 这也是Android默认的类型,
Context.MODE_APPEND是追加的模式 还有两种模式最新SDK已弃用
public static voidwrite(Context context,String fileName,String string) {
FileOutputStream outputStream =null;
BufferedWriter bufferedWrite =null;
try{
outputStream = context.openFileOutput(fileName,
Context.MODE_PRIVATE);
OutputStreamWriter outputStreamWriter =
newOutputStreamWriter(outputStream);
bufferedWrite =newBufferedWriter(outputStreamWriter);
bufferedWrite.write(string);
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{
try{
if(outputStream !=null) {
outputStream.close();
}
if(bufferedWrite !=null) {
bufferedWrite.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
取数据只需要知道告诉文件名即可
public staticStringread(Context context,String fileName) {
String result ="";
FileInputStream fileInputStream =null;
BufferedReader reader =null;
try{
fileInputStream = context.openFileInput(fileName);
InputStreamReader inputStreamReader =new
InputStreamReader(fileInputStream);
reader =newBufferedReader(inputStreamReader);
result = reader.readLine();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{
try{
if(fileInputStream !=null) {
fileInputStream.close();
}
if(reader !=null) {
reader.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
returnresult;
}
还有更多的文件存储函数 我就简单的介绍了 context.openFileInput和context.openFileOutput 下篇文章继续吧
3、数据库存储Android给每个应用分配了一个轻量级的数据库,之所以轻量级是数据库内存占用空间很小,处理数据很快。它提供一个类SQLiteOpenHelper
来对数据库进行操作(增删改查)而且他是抽象类 所以如果你要操作数据库的话必须自己去创建一个自定义类继承SQLiteOpenHelper 去实现数据库处理逻辑
具体操作 下篇文章再见
简单记录 快乐分享嘛!!!
戳一下这个小心心
领取专属 10元无门槛券
私享最新 技术干货