文件存储

将数据存储到文件中

openFileOutput(文件名,文件的操作模式),返回对象为FileOutputStream对象

文件名:文件创建时创建名称,不包括路径,默认存储到/data/data/<package_name>/files目录(这块暂时有疑问

文件的操作模式:MODE_PRIVATE,覆盖原有内容;MODE_APPEND,追加新内容

代码将编辑文本框中的内容存到文件中:

 protected void onDestroy() {
    super.onDestroy();
    editText=(EditText) findViewById(R.id.message_send);
    String inputText=editText.getText().toString();
    save(inputText);
}
public  void save(String inputText){
    FileOutputStream out=null;
    BufferedWriter writer=null;
    try{
        out=openFileOutput("data", Context.MODE_PRIVATE);
        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();
        }
    }
}

即当活动销毁的时候存储到data文件中。openFileOutput——>FileOutputStream——>OutputStreamWriter——>BufferedWriter,通过BufferedWriter写入到文件中。

*注意:*需要重新阅读一下Java的读写操作。

从文件中读取数据

openFileInput(读取文件名)

private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText=(EditText)findViewById(R.id.message_send);
    String inputText=load();
    if(!TextUtils.isEmpty(inputText)){
        editText.setText(inputText);
        editText.setSelection(inputText.length());
        Toast.makeText(this,"restoring successed",Toast.LENGTH_SHORT).show();
    }
}
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();
}

onCreate()方法中调用load()方法得到文件中存储的文本内容。

用TextUtils.isEmpty()方法判断是否为空,一次性对两种空值判断:字符串为null或者等于空字符串,参数为String类型,如果为空,返回true。

读到的内容不为空,则调用EditText的setText()方法,将内容填充,参数为String类型。同时调用EditText的setSelection()方法将光标移动到文件内容结尾,参数为int类型。

之后使用Toast表示读取数据成功。

测试结果

即在文本编辑框中填写内容,并把数据保存在data文件中。

之后按back键返回,再重新打开,便可以看到刚刚编辑在文本框中的内容展示出来,并且光标在这个之后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值