文件存储
1 Context类提供了一个openFileOutput()方法,用于将数据存储到指定的文件中,该方法返回看看一个FileOutputStream对象,
通过FileOutputStream对象构建一个OutputStreamWriter对象,再根据OutputStreamWriter对象构建一个BufferedWriter对象,根据BufferedWriter的write()方法的参数保存数据
2 Context提供了一个openFileInput()方法,用于从文件中读取数据,该方法返回一个FileInputStream对象,通过FileInputStream对象构建一个InputStreamReader对象,再根据InputStreamReader对象构建一个BufferedReader对象,根据BufferedReader对象的readLine()方法进行一行一行的读取,再StringBuilder对象拼接字符,即可获取文件中保存的数据
edit.setSelection(int i)方法将输入光标移动到i长度的位置
TextUtils.isEmpty()方法,可以一次性进行两种空值的判断(null和空字符串)
SharedPreferences存储
1 SharedPreferences是使用键值对的方式来存储数据的
2 获取SharedPreferences对象:
1 Context类提供的getSharedPreferences()方法,该方法接受两个参数,第一个用于指定SharedPreferences文件的名称,若不存在则会创建一个,第二个参数用于指定操作模式:MODE_PRIVATE,该种模式和直接传入0效果相同
2 Activity类中的getPreferences()方法,只接受一个参数即MODE_PRIVATE,因为使用该方法是会自动将当前活动的类名作为SharedPreferences的文件名
3 PreferenceManager类中的getDefaultSharedPreferences()方法,是个静态方法,接受一个Context参数
3 向SharedPreferences中存储数据
1 调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象
2 向SharedPreferences.Editor对象中添加数据,如putBoolean(),putString()等
3 SharedPreferences.Editor对象调用applay()方法提交数据
4 从SharePreferences中读取数据:SharePreferences对象提供了一系列get方法,用于对存储的数据进行读取
SQLite数据库存储
1 SQLite是一款轻量级的关系型数据库,借助SQLiteOpenHelper(抽象类)帮助类可以非常简单的对数据库进行创建和升级。
2 SQLiteOpenHelper有两个抽象方法:onCreate()和onUpgrade();还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase(),两个方法都可以创建或打开一个现有的数据库(有就直接打开,无则创建),返回一个对数据库进行读写操作的对象
3 创建一个数据库帮助类MySQLiteOpenHelper,使其继承自抽象的SQLiteOpenHelper
1 首先把建表语句定义成一个字符串常量,特别注意该语句的语法,很容易语法错误
2 重写带4个参数的构造方法:第一个为Context;第二个为String,表示数据库名;第三个是Cursor,一般传入null;第四个是版本号
3 重写父类的两个抽象方法:onCreate()与onUpgrade(),在哦那Create()方法中调用数据库的execSQL()方法创建表,该方法传入的是建表语句的的字符串常量
4 当在活动中new MySQLiteOpenHelper()时,传入对应参数,即可在创建数据库的同时创建表
5 在onUpgrade()中对数据库进行升级:比如需要再添加一张表时,定义建表语句为一个字符串常量,然后在onUpgrade()方法中,利用该方法提供的参数调用execSQL()方法删除原来的表,再调用onCreate()重新创建,最后在活动中new 数据库实例时,将最后的参数改为比之前大的数即可
6 活动中得到数据库的实例后,通过实例调用getReadableDatabase()或getWritableDatabase()方法,则返回一个对数据库进行读写的对象(SQLiteDatabase的一个实例)
4 获取到SQLiteDatabase对象后,使用ContentValues的put
()方法,来对要添加的数据进行组装,然后SQLiteDatabase对象调用insert()方法出入数据,接受3参数;调用update()方法更新数据,接受4个参数;调用delete()删除数据,接受3个参数;调用query()方法用于对数据的查询,该方法参数很多,最短对的重载方法也有7个参数,query()返回一个Cursor对象,查询到的数据都将从该对象中取出
5 LitePal开源框架的使用
1 添加远程库:compile 'org.litepal.android:core:版本号'
2 配置litepal.xml文件:在app/src/main目录下,New--Directory,创建一个assets目录,在该目录下再新建一个litepal.xml文件,Book和Category是模型类,即Java bean,如下:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore" ></dbname>
<version value="2" ></version>
<list>
<mapping class="com.example.litepaltest.Book"></mapping>
<mapping class="com.example.litepaltest.Category"></mapping>
</list>
3 配置Li特P阿里Application,在AndroidManifest.xml中的application下添加:
android:name="org.litepal.LitePalApplication"
4 用Connector.getDatabase()创建数据库
5 升级数据时,将版本号加1即可
6 让模型类(本例中Book,Category)继承自DataSupport,利用模型类的实例的set系列方法添加相应数据,最后用模型类的实例调用save(),即添加数据成功,save()方法是从继承的DataSupport类而来的;调用updateAll()进行更新数据;调用setToDefault()方法将数据更新成默认值;调用deleteAll()删除数据;DataSupport.findAll(Book.class),查询Book表中的所有数据,返回一个List<Book>集合