Android学习笔记——文件存储

来源:互联网 发布:od破解 e盾网络验证 编辑:程序博客网 时间:2024/05/22 05:19

Android学习笔记——文件存储

实现在编辑框输入信息,当destory该activity时,把用户输入的内容以文件形式储存起来,当再次打开该应用时,读取文件,之前输入过的内容就会重新显示出来 。


代码

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="cn.yimispace.filepersistencetest.MainActivity" >    <EditText        android:id="@+id/edit"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="Type something here" /></RelativeLayout>

MainActivity.java

package cn.yimispace.filepersistencetest;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.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private EditText edit;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        edit = (EditText) findViewById(R.id.edit);        String inputText = load();        if(!TextUtils.isEmpty(inputText)){            edit.setText(inputText);                //将内容填充到编辑框内            edit.setSelection(inputText.length());  //将光标移动到文本末尾位置            Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show();        }    }    /**     * 加载已存储的文件内容     * @return     */    public String load(){        FileInputStream in = null;        BufferedReader  reader = null;        StringBuilder content = new StringBuilder();        try {            in = openFileInput("data"); //打开名为"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();    }    @Override    protected void onDestroy() {        super.onDestroy();        String inputText = edit.getText().toString();        save(inputText);    //销毁前对输入编辑框的数据inputText进行保存    }    /**     * 文件存储     * @param inputText     */    public void save(String inputText) {        FileOutputStream out = null;        BufferedWriter writer = null;        try {            /**             * openFileOutput             * 第一个参数:要用于存储的文件名             * 第二个参数:文件的操作模式,             * MODE_PRIVATE表示若已有同名文件则覆盖原文件内容;             * MODE_APPEND表示若已有同名文件则在文件内追加内容。             * 若无同名文件则会新建此文件。             */            out = openFileOutput("data", Context.MODE_PRIVATE);            writer = new BufferedWriter(new OutputStreamWriter(out));            writer.write(inputText);    //把编辑框内容写入文件"data"中        } catch(IOException e){            e.printStackTrace();        } finally {            try {                if(writer!=null){                    writer.close();                }            } catch(IOException e) {                e.printStackTrace();            }        }    }}

效果图

编辑框输入界面

编辑框输入界面

输入数据退出应用后,在DDMS里/data/data/[packagename]/files/目录下寻找生成的”data”文件 生成的"data"文件

你可以导出文件并用记事本查看内容

导出文件
用记事本查看内容

当再次打开该应用时,之前输入过的内容就会重新显示出来

1 0