Android数据持久化功能之一:文件存储

来源:互联网 发布:mac os x 开机启动项 编辑:程序博客网 时间:2024/05/18 17:56

       数据持久化就是指将那些内存中的瞬时数据保存到持久化设备中(如手机文件、数据库等),当关机,停电后,数据不丢失。

 Android 系统中主要提供了三种方式用于实现数据持久化功能,分别是:
 1、文件存储
 2、SharedPreference 存储
 3、数据库存储。
 
 今天我们学习第一种存储方式:文件存储。
 使用范围:文件储存适合用于存储一些简单的文本数据或二进制数据。

没有理论,直接上代码:


效果图如下:



activity_main.xml 中的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"     android:orientation="vertical"    >    <EditText        android:id="@+id/edit"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入内容" />    <Button        android:id="@+id/saveInfo"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="保存信息" />    <Button        android:id="@+id/loadInfo"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="获取保存的信息" /></LinearLayout>


MainActivity 中的代码:

package com.demo.filepersistencedemo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private EditText edit;private Button save;private Button loadInfo;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edit = (EditText) findViewById(R.id.edit);save = (Button) findViewById(R.id.saveInfo);loadInfo = (Button) findViewById(R.id.loadInfo);save.setOnClickListener(this);loadInfo.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.saveInfo:// 获得edit中输入的值String inputText = edit.getText().toString();// 将输入框中的值存入file文件中save(inputText);edit.setText("");//清空刚刚输入的信息break;case R.id.loadInfo:String str = load();if (!TextUtils.isEmpty(str)) {edit.setText(str);edit.setSelection(str.length());Toast.makeText(this, "信息获取成功", Toast.LENGTH_SHORT).show();}break;default:break;}}@Overrideprotected void onDestroy() {super.onDestroy();// 活动销毁之前,获得edit中输入的值String inputText = edit.getText().toString();// 将输入框中的值存入file文件中save(inputText);}/** * @param inputText *            将输入框中值保存到文件中 保存方式:文件存储 */public void save(String inputText) {FileOutputStream out = null;BufferedWriter writer = null;try {/** * Context类中提供了openFileOutput(String name, int * mode)方法,实现将数据存储到指定的文件中的功能。 该方法中有两个参数,分别是: * 1、第一个参数name是文件名,这个文件名不可以包含路径, 因为所有的文件都是默认存储到/data/data/<package * name>/files/ 目 录下 的 2、第 二 个 参数 mode是 文件 的 操作 模 式 ,主 要 有两 种 模式 可 * 选: a、MODE_PRIVATE:默认操作模式,文件名相同时,写入的新内容会覆盖原有内容,不存在就创建新文件。 * b、MODE_APPEND:文件名相同时,写入的新内容追加到原有内容后面,不存在就创建新文件。 */out = openFileOutput("data", Context.MODE_APPEND);// 这里使用追加的方式writer = new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null) {writer.close();}} catch (IOException e) {e.printStackTrace();}}}/** * @return 保存到文件中的字符串 获得保存到文件中的字符串信息 */public String load() {FileInputStream in = null;BufferedReader reader = null;StringBuilder content = new StringBuilder();try {/** * Context类中提供了一个 openFileInput(String name)方法,用于从文 件中读取数据。 * 它只接收一个参数:要读取的文件名, * 然后系统会自动到/data/data/<package name>/files/目录下去加载这个文件, 并返回一个 * FileInputStream 对象,得到了这个对象之后再通过 Java 流的方式就可以将数据读取出来了 */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();}}


下载项目:

Android文件存储demo下载 点这里


eclipse中查看file保存的位置,如图:



导入到电脑上的值,如图:





0 0
原创粉丝点击