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)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...
随机推荐
- [OC] 图片平铺
Tip: self.bgImg.image = [self.bgImg.image resizableImageWithCapInsets:UIEdgeInsetsMake(100, 40, 40, ...
- [转]NandFlash和NorFlash的区别
一. NAND和NOR的比较 NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM 和EEPROM一统天下的局面.紧 ...
- C# 文件及文件夹深度复制
完善了下 文件中的文件及文件夹中的复制!如果有更优解决方案请不吝指教 protected void FileDepthCopy(string source, string target){ if (D ...
- Hive数据仓库
Hive 是一个基于Hadoop分布式文件系统(HDFS)之上的数据仓库架构,同时依赖于MapReduce.适用于大数据集的批处理,而不适用于低延迟快速查询. Hive将用户的HiveQL语句转换为M ...
- Openfire on Centos7
学习一下linux,装备 1)centos 最小安装.(找抽的节奏) 2)必备 oepnssh yum install openssh-server.x86_64 3)配置网络.打开 /etc/sys ...
- python成长之路【第十七篇】:玩转jQuery
一.jQuery简介 1.1.jQuery是什么 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototy ...
- iOS 开发遇到的问题之(nil指针对NSDictionary及NSArray初始化的影响)
nil指针对NSDictionary及NSArray初始化的影响 最近在做项目的时候遇到一个挺坑的崩溃问题,是由于NSDictionary初始化时nil指针引起的崩溃.假设我们现在要初始化一个{key ...
- mac下安装nginx+php+mysql+xdebug
一,安装homebrew 就像linux下面有yum一样,mac也有个homebrew,管理软件非常便捷. 官网:http://brew.sh/index_zh-cn.html 上面有句命令,复制下来 ...
- Android开发:在布局里移动ImageView控件
在做一个app时碰到需要移动一个图案的位置,查了一上午资料都没找到demo,自己写一个吧 RelativeLayout.LayoutParams lp = new RelativeLayout.Lay ...
- Python网络连接
import appuifw as ui import httplib from os import abort uia=ui.app uin=ui.note uiq=ui.query e32=ui. ...