android 存储方式简书,Android的多种数据存储方式

1. 简介

作为一个完整的应用程序,数据存储操作是必不可少的。现在Android的离线缓存就是通过网络良好状态时将从服务器收到的数据保存到本地。Android系统中主要提供了3种方式进行数据存储,分别是文件存储、SharedPreference存储以及数据库存储。另外,还可以将数据存储在手机的SD卡中,但是前3种方式会比存储在SD卡中更加简单和安全。

2. 文件存储

文件存储是android中最基本的一种数据存储方式,它适用于存储一些简单的文本数据或者二进制数据。

2.1 将数据存储到文件中

private void save(String input) throws IOException {

FileOutputStream out = null;

BufferedWriter writer = null;

out = openFileOutput("data", Context.MODE_PRIVATE);

writer = new BufferedWriter(new OutputStreamWriter(out));

try {

writer.write(input);

} catch (IOException e) {

e.printStackTrace();

}finally {

if(writer !=null){

writer.close();

}

}

}

Context类中提供了openFileOutput()方法,可以将数据存储到指定的文件中。第一个参数是文件名,可以不包含完整路径,因为所有文件都默认存储到指定目录下。第二个参数是文件操作模式,MODE_PRIVATE(覆盖原文件内容)、MODE_APPEND(在原文件后追加内容) 返回值是FileOutputStream对象,然后借助这个对象构建出一个OutputStreamWriter对象,接着再构建出一个BufferedWriter对象写入文件。

2.2 从文件中读取数据

private String load() throws IOException {

FileInputStream in = null;

BufferedReader reader = null;

StringBuilder content = new StringBuilder();

in = openFileInput("data");

reader = new BufferedReader(new InputStreamReader(in));

String line = "";

while((line = reader.readLine())!=null){

content.append(line);

}

if(reader!=null){

reader.close();

}

return content.toString();

}

Context类中提供openFileInput()方法,只接受一个参数,就是要读取的文件名,然后返回FileInputStream对象,然后借助它又构建出一个InputStreamReader对象,接着再构建出一个BufferedReader对象,就可以一行行地读取,并且存放在StringBuilder里面。

3.SharedPreferences存储

3.1SharedPreferences文件存储数据

SharePreferences使用键值对的方式来存储数据,而且支持多种不同数据类型存储,即存储的数据是整型,那么读取出来的数据也是整型。SharePreferences文件是使用XML格式来对数据进行管理的。

使用SharedPreferences存储,首先要获取SharedPreferences对象。

Context类中的getSharedPreferences()方法

第一个参数是文件名、第二个参数是操作模式,只有MODE_PRIVATE模式可选,与0效果相同,表示只有当前的应用程序才能对SharedPreferences文件进行读写。

Activity类中的getPreferences()方法

只有一个操作数作为参数,文件名默认使用当前类名。

PreferenceManager类中的getDefaultSharedPreferences()方法

这是一个静态方法,只接受一个Context参数。自动使用当前包名作文SharedPreferences文件名。

然后开始存储数据

调用SharedPreferences对象的edit()方法获取SharedPreferences.Editor对象。

向SharedPreferences.Editor对象中添加数据。

调用apply()方法将添加的数据提交,从而完成数据存储操作。

BtPut.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SharedPreferences.Editor editor =getSharedPreferences("data",MODE_PRIVATE).edit();

editor.putString("data",editText.getText().toString());

editor.apply();

}

});

3.2SharedPreferences文件读取数据

1.获取SharedPreferences对象,然后get出来。

SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);

String strs = pref.getString("data","空");

editText.setText(strs);

4.使用LitePal操作数据库存储数据

配置LitePal

在build.gradle中增加语句

compile 'org.litepal.android:core:1.5.1'

在app/src/main/目录下创建一个目录assets,在该目录下新建一个litepal.xml文件(记得加后缀),接着编辑文件内容

修改AndroidManifest.xml中的代码

在中添加语句

android:name="org.litepal.LitePalApplication"

创建表

只需要定义一个Book类,继承DataSupport。

在litepal.xml中添加代码

新建数据库

BtPut.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

LitePal.getDatabase();

}

});

插入和查询数据库

BtGet.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Book book = new Book();

book.setName("123");

book.setId(123);

book.setPages(456);

book.setPrice(14.222);

book.save();

List books = DataSupport.findAll(Book.class);

for(Book book1:books){

Toast.makeText(MainActivity.this,book1.getName()+book1.getId()+book1.getPages(),Toast.LENGTH_SHORT).show();

}

}

});

7.更新数据

book.setPrice(14.96);

book.updateAll("name=? and author = ?","123","123");

8.删除数据

DataSupport.deleteAll(Book.class,"price< ? ","15");

sqllite数据库的操作相比于Litepal数据库操作的操作语句更加复杂,而且litepal能做到sqlite相同的效果,这里就不详细说明了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值