Android中的数据保存
形式
Android的数据保存分为3种形式:file, SharedPreference, Database
文件
主要思想就是通过Context类中提供的openFileInput和openFileOutput方法,然后利用Java的各种流来进行读写操作。具体来讲,openFileOutput()返回FileOutputStream对象,得到了对象之后就可以通过OutputStreamWriter转换为字符流,然后通过BufferWriter写入字符。注意openFileOutput有两种模式,第一种是MODE_PRIVATE模式是默认模式,如果文件已经存在就覆盖原来的文件。第二种是MODE_APPEND模式,如果已经存在就追加内容
out = openFileOutput("data", Context.MODE_APPEND);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
文件默认保存在/data/data/<package name>/files目录下。如果要从该目录下读取:
//auto check "/data/data/<package name>/files"
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
content.append(line);
}
SharedPreferences
SharedPreferences是用键值对来保存数据的。要使用SharedPreferences首先要获得SharedPreferences对象,方法有三种 1, Context类的getSharedPreferences()方法。SharedPreferences存放在/data/data/<package name>/shared_prefs/目录下。有两种操作模式,分别是MODE_PRIVATE和MODE_MULTIPROCESS,前一个表示只有当前的程序可以对这个文件进行读写,后一个表示多个进程可以读写。 2, Activity类的getPreferences()方法。 3, PreferenceManager类中的getDefaultSharedPreferences方法。 得到SharedPreferences对象之后就可以向SharedPreferences存储数据了,分三步:
- 调用SharedPreferences对象的edit方法
- 通过putBoolean或者putString方法向SharedPreferences添加数据 或者通过getString, getInt, getBoolean等方法可以读取数据
- 通过commit()方法将添加的数据提交,完成数据存储的操作
数据库
- 创建数据库的时候调用getReadableDatabase()或者getWritableDataBase()方法可以创建数据库,数据库文件存放在/data/data/<package name>/databases下,此时重写的onCreate()方法会得到执行。并可以通过onUpgrade()来更新数据库,比如添加新的表。接下来就可以通过CRUD操作数据库了
- 添加数据用insert方法,该方法有三个参数,第一个是表名,第二个是null,第三个是ContentValue对象:
ContentValues values = new ContentValues();
values.put("name", "The Da Vinci Code");
values.put("author", "Dan Brown");
values.put("pages", 454);
values.put("price", 16.96);
db.insert("Book", null, values); - 更新数据更新数据用update方法
ContentValues values = new ContentValues();
values.put("price", 10.99);
db.update("Book", values, "name = ?",
new String[] { "The Da Vinci Code" }); - 删除数据用delete方法
db.delete("Book", "pages > ?", new String[] { "500" }); - 查询数据用query方法
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("Book", null, null, null, null, null,
null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor
.getColumnIndex("name"));
String author = cursor.getString(cursor
.getColumnIndex("author"));
int pages = cursor.getInt(cursor
.getColumnIndex("pages"));
double price = cursor.getDouble(cursor
.getColumnIndex("price"));
Log.d("MainActivity", "book name is " + name);
Log.d("MainActivity", "book author is " + author);
Log.d("MainActivity", "book pages is " + pages);
Log.d("MainActivity", "book price is " + price);
} while (cursor.moveToNext());
Android中的数据保存的更多相关文章
- android中Json数据保存方式
package com.example.savejsonproject; import java.io.File; import java.io.FileNotFoundException; impo ...
- 67.Android中的数据存储总结
转载:http://mp.weixin.qq.com/s?__biz=MzIzMjE1Njg4Mw==&mid=2650117688&idx=1&sn=d6c73f9f04d0 ...
- Android中的数据存储
Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedP ...
- Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上)
原文:[置顶] Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上) 我们在用手机的时候可能会发现,即使应用被放到后台再返回到前台数据依然保留(比如说我们正在玩游戏,突然电话 ...
- Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)
原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据 ...
- Android中的数据持久化机制
Android中几种最简单但是却最通用的数据持久化技术:SharedPreference.实例状态Bundle和本地文件. Android的非确定性Activity和应用程序生存期使在会话间保留UI状 ...
- Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏
文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...
- android中的数据存取-方式一:preference(配置)
这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...
- 【转】android中的数据存取-方式一:preference(配置)
这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...
随机推荐
- hightcharts 3d 堆积图下钻
图片效果 ***************代码部分****************************************************** <!doctype html> ...
- 1010. Radix (25)(未完成)
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
- white-space: nowrap 与字符串(文本)换行
在需要对字符串进行元素内换行时,我们通常要对该元素设置相关属性约束以及宽度. 例如:style="word-wrap:break-word; word-break: break-all; w ...
- SQLServer的数据存储结构01 文件与文件组
在SQLServer中,每当新建一个数据库时,则会有一组相应的SQLServer文件被创建,这些单独的SQLServer文件构成的总体称为文件组. 一个数据库对应着一个文件组,在这个文件组里,会包括三 ...
- 整理mac上的php环境
重装了一下mb,重新编译环境太麻烦了,所以整理一下mac系统自带php环境用: OS X yosemite 10.10.5 自带apache,php 1,让apache启用php模块 sudo vi ...
- medoo–高效的轻量级PHP数据库操作类
网址:http://medoo.lvtao.net/ /*medoo.php*/ class medoo { protected $database_type = ‘mysql’; protected ...
- 从github拉取项目到myeclipse本地
1.首先拿到jacky-lulu分享的地址 https://github.com/jacky-lulu1/cxf_client 2.登录jacky-lulu账号,fork一份cxf_client到自己 ...
- 把本地仓库工程上传到github上和从gitbu同步工程到本地
1.在本地产生秘钥和公钥 [root@jacky git_project]# ssh-keygen -t rsa -C "jacky-lulu@1073740572@qq.com" ...
- node.js基础 1之 HTTP知识填坑
http使用流程: http协议 http 客户端发起请求,创建端口 http 服务器在端口监听客户端请求 http 服务器向客户端返回状态和内容 解析域名查找dns(资源)的过程: 1.chrome ...
- 对于Python中RawString的理解
总结 1.'''作用: 可以表示 "多行注释" ."多行字符串" ."其内的单双引号不转义" 2.r 代表的意思是: raw 3.r 只对其 ...