1. 文件存储
文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动保存到文件当中,因而适合用于存储一些简单的文本数据或二进制数据。
-
将数据存储到文件中
public void save() { string data = "Data to save"; FileOutputStream out = null; BufferedWriter writer = null; try { out = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWrider(new OutputStreamWriter(out)); writer.write(data); } catch (IOException e) { e.printStackTrace(); } fainally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } }
-
从文件中读取数据
public String load() { FileInputStream in = null; BufferedReader reader = null; StringBuilder content = new StringBuilder(); try { in = openFileInput("data"); reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while ((line = reader.readLine()) != null) { content.append(line); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return content.toString(); }
2. SharedPreferences 存储
SharedPreferences 是使用键值对的方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。SharedPreferences 支持多种不同的数据类型存储,如果存储的数据类型是整形,那么读取出来的数据也是整型;如果存储的数据是一个字符串,取出来的数据仍然是字符串。
① 将数据存储到 SharedPreferences 中
首先需要获取到 SharedPreferences 对象
-
Context 类中的 getSharedPreferences() 方法:
接收两个参数,第一个用于指定 SharedPreferences 文件的名称,若指定的文件不存在则会创建一个,文件存放于/data/data/<package name>/shared_prefs/目录下。
第二个参数用于指定操作模式,只有 MODE_PRIVATE 可选,表示只有当前程序才可对该 SharedPreferences 文件进行读写。
-
Activity 类中的 getPreferences() 方法:
类似 Context 中的 getSharedPreferences() 方法,但只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。
-
PreferenceManager 类中的 getDefaultSharedPreferences()方法:
这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。
向 SharedPreferences 文件中存储数据
调用 SharedPreferences 对象的 edit() 方法来获取一个 SharedPreferences.Editor 对象。
向 SharedPreferences.Editor 对象中添加数据。
调用 apply() 方法将添加的数据提交。
关键代码片段:
{
SharedPreferences.Editor editor = getSharedPreferences(
"data", MODE_PRIVATE).edit();
editor.putString("name", "Tom");
editor.putInt("age", 28);
editor.putBoolean("married", false);
editor.apply();
}
② 从 SharedPreferences 中读取数据
关键代码片段
{
// 读取数据
SharedPreferences pref = getSharedPreferences(
"data", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
// 打印日志
Log.d("MainActivity", "name is " + name);
Log.d("MainActivity", "age is " + age);
Log.d("MainActiviry", "married is " + married);
}