《华联学院《android软件开发》课件06数据存储全方案--详解持久化技术》由会员分享,可在线阅读,更多相关《华联学院《android软件开发》课件06数据存储全方案--详解持久化技术(31页珍藏版)》请在金锄头文库上搜索。
1、第六章数据存储全方案-详解持久化技术Android软件开发主讲:王海本章目标了解Android数据存储方式能够使用I/O流操作文件能够读写SD卡文件能够使用SharedPreferences存储能够熟练使用SQLite进行数据的增删改查Android软件开发主讲:王海数据存储Android提供了以下 三种数据存储方式: 文件存储:少量数据需要保存,且数据格式无需结构化 SharedPreferences存储:数据是以“key-value”键值对的方式进行组织和管理,并保存到XML文件中 SQLite数据库存储:用于数据量较多,且需要进行结构化存储Android软件开发主讲:王海I/O流操作文件
2、通过Context对象提供的openFileInput()和openFileOuput()两个方法分别来获得文件的输入流和输出流: FileInputStream openFileInput(String name):用于获取应用程序的数据文件夹下指定“name”文件名的标准文件输入流,以便读取设备中的文件 FileOutputStream openFileOuput(String name,int mode):用于获取应用程序的数据文件夹下指定“name”文件名的标准文件输出流,以便将数据写入设备的文件中Android软件开发主讲:王海I/O流操作文件Context类中提供4个静态常量用于表
3、示不同的输出模式模式功能描述Context.MODE_PRIVATE私有模式所创建的文件都是私有文件,只能被应用本身所访问Context.MODE_APPEND附加模式首先会检查文件是否存在,若文件不存在,则创建新文件;若文件存在,则在原文件的末尾追加内容Context.MODE_WORLD_READABLE可读模式,该模式的文件可以被其他应用程序读取Context.MODE_WORLD_WRITABLE可写模式,该模式的文件可以被其他应用程序读写从Android 4.2开始,不推荐使用Context.MODE_WORLD_WRITABLE可读模式和Context.MODE_WORLD_REA
4、DABLE可写模式,由于这两种模式允许其他应用程序操作本应用程序所创建的文件数据,很容易会引起安全漏洞,因此在高版本的Android系统中尽量不要采用这两种模式。Android软件开发主讲:王海I/O流操作文件方法功能描述File getDir(String name,int mode)在应用程序的数据文件夹下获取或创建name对应的子目录File getFilesDir()获取应用程序的数据文件夹的绝对路径String fileList()返回应用程序的数据文件夹下的所有文件boolean deleteFile(String name)删除应用程序的数据文件夹下的指定文件 Context上下
5、文对象还提供了一些方法来访问应用程序的数据文件夹Android软件开发主讲:王海I/O流操作文件 获取文件输入流进行读取文件/定义文件名String file = qst.txt; /获取指定文件的文件输入流FileInputStream fileInputStream = openFileInput(file);/定义一个字节缓存数组byte buffer=new bytefileInputStream.available();/将数据读到缓存区fileInputStream.read(buffer);/关闭文件输入流fileInputStream.close(); 获取文件输出流进行写文件
6、/获取文件输出流,操作模式是私有FileOutputStream fileOutputStream = openFileOutput(file,Context.MODE_PRIVATE);String strContent = QST青软实训;/将内容写入文件fileOutputStream.write(strContent.getBytes();fileOutputStream.close();Android软件开发主讲:王海读写SD卡步骤 使用Environment.getExternalStorageState()方法判断是否插入SD卡,且应用程序具有读写SD卡的权限 使用Environ
7、ment.getExternalStorageDirectory()方法获取SD卡的目录 使用文件输入流(FileInputStream、FileReader)或输出流(FileOutputStream、FileWriter)来读写SD卡中的文件SD卡(Secure Digital Memory Card)是一种基于半导体快闪记忆器的多功能存储卡,具有大容量、高性能、安全高等多种特点,被广泛地用于便携式移动设备,例如手机、数码相机、PDA等。SD卡极大地扩充了手机的存储能力。Android软件开发主讲:王海读SD卡上的文件/ 1、如果手机插入了SD卡,而且应用程序具有访问SD的权限if (En
8、vironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)/ 2、获取SD卡对应的存储目录File sdCardDir = Environment.getExternalStorageDirectory();Log.d(FileIO,+ sdCardDir);/3、 获取指定文件对应的输入流FileInputStream fis = new FileInputStream(sdCardDir.getCanonicalPath() + FILE_NAME);./读文件 Android应用程序读写SD卡中的文件时,需要
9、注意以下两点: 确保已插入SD卡 在AndroidManifest.xml程序清单文件中配置SD卡的读写权限Android软件开发主讲:王海配置SD卡的读写权限除了使用Environment.getExternalStorageDirectory()方法来获取SD卡的路径外,还可以直接判断SD卡所对应的路径是否存在,这样也可以知道手机是否插入了SD卡Android软件开发主讲:王海文件浏览器 用于查看SD卡中的文件信息 使用ListView组件来显示指定目录中的全部文件和文件夹Android软件开发主讲:王海SharedPreferences接口 SharedPreferences常用方法方法
10、功能描述boolean contains (String key)判断SharedPreferences是否包含指定key的数据SharedPreferences.Editor edit()返回SharedPreferences.Editor编辑对象Map getAll()获取SharedPreferences中所有key-value对,返回值的类型为Map类型xxx getXxx(String key,xxx defValue)返回SharedPreferences中指定key的数据值Android软件开发主讲:王海SharedPreferences.Editor接口 SharedPrefe
11、rences.Editor接口常用方法方法功能描述SharedPreferences.Editor clear()清除SharedPreferences中所有数据SharedPreferences.Editor putXxx(String key,xxx value)将指定key所对应的数据保存到SharedPreferences中SharedPreferences.Editor remove(String key)删除SharedPreferences中指定key所对应的数据boolean commit()当Editor编辑完成后,使用该方法提交内容,以便数据保存到SharedPrefere
12、nces中SharedPreferences和SharedPreferences.Editor需要组合使用,SharedPreferences负责读取数据,而SharedPreferences.Editor负责保存数据。Android软件开发主讲:王海SharedPreferences.Editor接口 getSharedPreferences(String name,int mode)方法的参数说参数name用于指定存储数据的XML文件名,该文件名无须后缀(.xml),系统会自动添加.xml后缀,并在“/data/data/包名/shared_prefs/”目录中创建该文件参数mode用于设
13、定文件的操作模式,取值可以是三种: sanzhContext.MODE_WORLD_READABLE(可读) Context.MODE_WORLD_WRITEABLE(可写) Context.MODE_PRIVATE(私有)从Android 4.2开始不再推荐MODE_WORLD_READABLE(可读)和MODE_WORLD_WRITEABLE(可写)这两种模式Android软件开发主讲:王海SharedPreferences操作步骤使用getSharedPreferences()方法获取一个SharedPreferences实例对象使用SharedPreferences实例对象的edit(
14、)方法,获取SharedPreferences.Editor编辑对象使用SharedPreferences.Editorr编辑对象的putXxx()方法来保存数据使用SharedPreferences.Editor编辑对象的commit()方法将数据提交到XML文件中使用SharedPreferences对象的getXxx()方法来读取数据Android软件开发主讲:王海SQLite特征轻量级独立操作简单便于管理和维护可移植性语言无关事务性Android软件开发主讲:王海SQLiteDatabase类 打开数据库的方法:openDatabase(String path, SQLiteDatab
15、ase.CursorFactory factory, int flags):打开path所指定的SQLite数据库openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory):打开或创建(如果文件不存在)path所指定的SQLite数据库openOrCreateDatabase(File file,SQLiteDatabase.CursorFactory factory):打开或创建(如果文件不存在)file所指定的SQLite数据库Android软件开发主讲:王海SQLiteDatabase常用操作方法方法功能描
16、述insert(String table,String nullColumnHack,ContentValues values)插入一条记录delete(String table,String whereClause,String whereArgs)删除一条记录query (boolean distinct, String table, String columns, String selection, String selectionArgs, String groupBy, String having, String orderBy, String limit)查询记录update(String table,ContentValues value,String whereClause, String whereArgs)修改记录execSQL(String sql)执行一条SQL语句rawQuery(String sql,String selectionArgs)执行带占位符的SQL查询beginTransaction()开始事务endTransaction()结束事务close