首页 > 系统 > Android > 正文

Android数据存储

2019-11-09 15:33:55
字体:
来源:转载
供稿:网友

Android数据存储

概述

Android开发中,经常会接触到数据存储, 故本文详细讲述下关于数据存储的知识,希望能够加深理解,时常回顾,由于本人才疏学浅,或有不当之处,望批评指教

数据存储方式

文本存储SharedPReferencesSQLite数据库ContentProvider

文本存储

文本存储比较简单,不会对数据做格式化处理,适合存储一些简单的文本数据,默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。 Context类提供了两种方法打开数据文件的IO流

文本写入
FileOutputStream openFileOutput (String name, int mode)

该方法将数据输出到文件里,方法接受两个参数,第一个参数是文件名,注意文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/<packagename>/files目录下的,基于该文件名创建文件;第二个参数是操作模式, 有两种模式可选 * MODE_PRIVATE: 默认的操作模式,表示私有数据,只能被本应用访问,并且写入内容会覆盖源文件内容 * MODE_APPEND: 表示若文件已存在,则往文件中追加内容,否则创建新文件。

private void write(){ String data = "举头望明月,低头思故乡"; BufferedWriter bufferedWriter = null; try { FileOutputStream fileOutputStream = openFileOutput("data", MODE_PRIVATE); bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); bufferedWriter.write(data); }catch (IOException e){ e.printStackTrace(); }finally { try { if(bufferedWriter != null){ bufferedWriter.close(); } }catch (IOException e){ e.printStackTrace(); } } }
文本读取
FileInputStream openFileInput (String name)

该方法从文件中读取数据,直接受一个参数,即要读取的文件名,然后系统会自动到/data/data/<packagename>/files/目录下加载该文件,并返回一个FileInputStream对象

private String read(){ BufferedReader bufferedReader = null; StringBuilder data = new StringBuilder(); try{ FileInputStream fileInputStream = openFileInput("data"); bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); String line = ""; while ((line = bufferedReader.readLine()) != null){ data.append(line); } }catch (IOException e){ e.printStackTrace(); }finally { try { if(bufferedReader != null){ bufferedReader.close(); } }catch (IOException e){ e.printStackTrace(); } } return data.toString(); }

SharedPreferences

SharedPreferences 是基于xml文件存储的键值对保存数据的,并且支持多种不同的数据类型。文件存放在/data/data/<packagename>/shared_prefs/目录下。当然,要使用SharedPreferences存储数据,首先要忽的SharedPreferences对象,可通过以下两个方法之一:

getSharedPreferences() - 接受两个参数,第一个是文件名称,第二个指定操作模式getPreferences() - 只接受操作模式参数,因只在Activity类中获取,故类名为文件名。
写入操作
调用SharedPreferences对象的edit()方法获取SharedPreferences.Editor对象向SharedPreferences.Editor对象中添加数据,使用 putBoolean() 和 putString() 等方法调用commit()apply()方法提交SharedPreferences.Editor editor = getSharedPreferences("data", MODE_APPEND).edit();editor.putBoolean("flag", true);editor.putInt("age", 22);editor.putString("name", "hao");editor.commit();
读取操作
获取SharedPreferences对象使用getXXX()方法读取数据SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_APPEND);

SQLite数据库和ContentProvider内容较多,故放在单独的博客中讲解, 后续整理,加油。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表