您的位置:首页 > 其它

第六章 数据存储

2015-06-07 14:30 393 查看
1.文件     一般不用。

2.数据库  几百k  存储联系人信息。

3.sp            键值对 存储一些密码,地址之类的。

4.sd卡。

1.文件

数据从内存中写入硬盘。先缓冲下 ,在转化 ,再输出。

FileOutputStream out=openFileOutput("data",Context.MODE.PRIVATE);   得到字节流 文件对象。

OutputStreamWriter outsw=new OutputStreamWriter(out);  转换流 。

BufferedWriter bufferw=new BufferedWriter(outsw); 带有缓冲区的字符输出流   

bufferw.write("data to save content");        将文本写入文件中。

从文件中读取数据  放入sb中。

StringBuilder sb=new StringBuilder();

FileInputStream in=openFileInput("data");

InputStreamReader reader=new InputStreamReader(in);   转换流 

String line=BufferedReader.readerline();           一行一行读取

while(line!=null)

{
sb.append(line);

}

if(!TextUtils.isEmpty(str))

{
edit.setText(str);
edit.setSelection(str.length());//光标移动到文本的末尾

}

。   

数据从内存中写入硬盘时,顺序是,缓冲流->转化流->文件流;

而缓冲流是字符流,本例中的文件流out是字节流,所以是字符流到字节流的桥梁;

OutputStreamWriter/InputStreamReader 是转换流

字符流与字节流的判断标准:根据名字的最后个单词。如果是Writer/Reader则是字符流,

若是InputStream/OutputStream则是字节流。因此,转换流本身是字符流。

BufferedReader,为字符输入流增加了缓冲区的功能

FileOutputStream,是用来操作文件的字节输出流,File代表操作的目的,OutputStream代表这是个输出的字节流

缓冲流是字符流

3.sp中

4.数据库

SQLiteOpenHelper
帮助类,借助这个类就可以非常简单地对数据库进行创建和升级 

命令行:sqlite3

SQLite
不像其他的数据库拥有众多繁杂的数据类型,它的数据类型很简单,integer
表示整型,real
表示浮点型,text
表示文本类型,blob
表示二进制类型 

create table Book(

id integer primary key autoincrement,

author text,

price real,

pages integer,

name  text

)

//SQLiteOpenHelper的子类 覆盖父类的方法,只会执行一次

public void onCreate(SQLiteDatabase db){

db.execSQL(str2);

db.execSQL(str);

}

public void onUpgrade(SQLitedatabase db,int oldVersion,int newVersion)

{
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreat(db);//再这里重新调用onCreate方法 在实例化的时候更改newVersion

}

构建出 SQLiteOpenHelper 的实例之后,再调用它的 getReadableDatabase()或 getWritableDatabase()方 法就能够创建数据库

getReadableDatabase()和 getWritableDatabase()。

这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在 则直接打开,否则创建一个新的数据库)

对数据库的操作就是crud。 create retrieve update delete 

              添加  insert select update  delete

db.insert("book",null,contentValues);

db.update("book",contentValues,"name=?",new String[]{"the davinci code"});

?是一个占位符,可以通过第四个参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: