目录
SharedPreference存储
内部存储数据
外部存储数据
数据库SQlite数据存储
网络存储
对于开发者来说Android的数据存储方式主要有五种:
- SharedPreference存储
- 内部存储数据
- 外部存储数据
- 数据库SQlite数据存储
- 网络存储
SharedPreference对象本身只能获取数据而不支持数据的存储和修改,存储修改是通过Editor对象来实现的
实现SharedPreference数据存储的步骤如下:
1 通过getPreference()方法得到SharedPreference的对象
2 通过edit方法来获得Editor的对象
3 利用Editor对象来实现数据的存储
4 通过commit()方法来提交
代码实现
//写操作
SharedPreferences preferences=getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor=preferences.edit();
editor.putString("edit_input",mEditTxetWrite.getText().toString());
editor.commit();
//读操作
SharedPreferences preferences=getPreferences(MODE_PRIVATE);
String content=preferences.getString("edit_input","我是默认值");
mTextViewRead.setText(content);
1 所谓的内部存储与外部存储,是指是否是手机内置。手机内置的存储空间,称为内部存储,Android的内部存储空间对于应用程序来说,就是“/data/data”目录。
2 使用内部存储主要有二个方式,一个是文件操作,一个是文件夹操作。
无论哪种方式,都提供了openFileInput()和openFileOutput()方法来读取设备上的文件。。
代码示例:
// 文件的写操作(在file文件夹下的缓存数据)
try {
FileOutputStream outputStream=openFileOutput("key",MODE_PRIVATE);
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
printWriter.write("你好,世界");
printWriter.flush();
printWriter.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 文件的读操作
try {
FileInputStream inputStream=openFileInput("key");
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
String line=br.readLine();
while (line!=null){
Log.d("TGA", ""+line);
line=br.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 写入到cache文件夹下的缓存数据
File file=new File(getCacheDir(),"hello.txt");
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream outputStream=new FileOutputStream(file);
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
printWriter.write("你好,Android");
printWriter.flush();
printWriter.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 读取cache文件夹下的数据
try {
FileInputStream inputStream=openFileInput("hello.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
String line=br.readLine();
while (line!=null){
Log.d("TGA", "" + line);
line=br.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
1 Android外部存储空间,与内部存储空间相对,外部存储空间是指手机出厂的时候不存在,用户在使用时候可以自由添加的外部存储介质,例如TS卡、SD卡等。
2 也是对文件进行操作。
代码示例:
File file=new File(Environment.getExternalStorageDirectory(),"hellosdcard.txt");
//Environment.getExternalStorageDirectory()指得到路径
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream outputStream=new FileOutputStream(file);
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
printWriter.write("你好本地存储");
printWriter.flush();
printWriter.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
1 SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。
数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库
Activites 可以通过 Content Provider 或者 Service 访问一个数据库。- Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。
SQLiteOpenHelper 的子类,至少需要实现三个方法:
1 构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2 onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3 onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。