一、要实现的功能

将输入框中的数据保存到指定文件名的文件中,实现数据的持久化;如果数据已经保存了,活动下次再启动的时候,就将保存在文件中的数据读取出来,显示在输入框中。

二、基本知识

  1. 利用活动生命周期中的一个回调函数onDestroy(),在活动被销毁之前,将数据写入到文件当中。例如按下返回键的时候,活动就被销毁,这个方法里面的代码就会被执行。
  2. 利用TextUtils中的isEmpty(CharSequence str)方法可以轻松地判断一个字符串变量是不是null,以及这个字符串是不是空字符串(字符串长度为0)。java中传统的方式是这么写的:
    if(string!=null&&string.length()!=0)
    ,这种方式比较麻烦,用TextUtils的话就比较方便了。
  3. ① 利用Contex类中的openFileOutput(String name, int mode)方法可以获取一个FileOutputStream对象,这个方法第一个参数传入的是文件名,第二个参数是文件的操作模式,取值主要有MODE_PRIVATE、 MODE_APPEND,如果文件已经存在了,第一种方式会把文件中原来的内容覆盖掉,第二种方式则是在原来的基础上进行追加数据。
    ②利用Contex类中的openFileInput(String name)可以获取一个FileInputStream对象,方法中传入的参数是文件的名称。
    除此之外,文件的读写操作就没有什么特殊的了,用到的都是JDK中的IO知识,这里还用到了缓冲字符流,主要是为了提高读取、写入的速度。

三、代码

  1. java代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;
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;public class MainActivity extends AppCompatActivity
{private EditText et;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et=findViewById(R.id.et);String load = load();if (!TextUtils.isEmpty(load))//如果文件存在{et.setText(load);et.setSelection(load.length());//将光标移动到输入框的末尾Toast.makeText(this,"从文件中恢复数据成功!",Toast.LENGTH_SHORT).show();}}@Overrideprotected void onDestroy()//活动被销毁之前,将数据保存到文件中{super.onDestroy();String string = et.getText().toString();save(string);}/*** 将文本数据写入到文件中* @param inputText*/private void save(String inputText){FileOutputStream fileOutputStream=null;BufferedWriter bufferedWriter=null;try{fileOutputStream=openFileOutput("info.txt",MODE_PRIVATE);bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream));bufferedWriter.write(inputText);} catch (Exception e){System.out.println(e);}finally{if (bufferedWriter!=null){try{bufferedWriter.close();} catch (IOException e){System.out.println(e);}}}}/*** 从文件中读取数据* @return*/private String load(){FileInputStream fileInputStream=null;BufferedReader bufferedReader=null;StringBuilder stringBuilder=new StringBuilder();try{fileInputStream= openFileInput("info.txt");bufferedReader=new BufferedReader(new InputStreamReader(fileInputStream));String line="";while ((line=bufferedReader.readLine())!=null){stringBuilder.append(line);}} catch (Exception e){System.out.println(e);}finally{if (bufferedReader!=null){try{bufferedReader.close();} catch (IOException e){System.out.println(e);}}}return stringBuilder.toString();}
}
  1. 布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><EditTextandroid:id="@+id/et"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:hint="请输入您要保存的信息"/>

四、截图

以下是两张在模拟器中的效果截图。

  1. 输入要保存的文字信息:
  2. 文件保存以后,下次再打开程序:

AndroidStudio中利用openFileOutput将数据保存在文件中,利用openFileInput读取文件中的数据相关推荐

  1. python中按照文件夹中文件的排列顺序读取文件内容,python文件显示和windows目录显示一致

    原创 python中按照文件夹中文件的排列顺序读取文件内容 2018-12-06 11:49:18 途径北海道 阅读数 3891 更多 分类专栏: python 版权声明:本文为博主原创文章,遵循 C ...

  2. 文件的创建与读取 文件的数据添加

    文件的创建与读取   文件的数据添加 一:概要 1:首先要站在程序的角度上. 2:文件的创建 即将程序中的数据 写入到文件当中. 3:文件的读取 即将一个文件中的信息读取到程序当中. 二:步骤 1:创 ...

  3. python中按照文件夹中文件的排列顺序读取文件内容

    在处理数据的过程中,文件夹下的文件有时候按照一定的规律命名,按照要求,有时需要将文件夹中的文件按照原始的顺序读取:假设文件目录如图所示: 按照: base_path = r'E:\download\g ...

  4. 1、第一列为姓名,第二列为语文成绩,第三列为数学成绩,编写一个程序,实现(1)按要求创建这样的文件 (2)读取文件中的信息并输出以下结果: ①分别求这个班数学和语文的平均分(保留1位小数)并输出

    3. 创建一个文件,内容如下: 林虹 95 98 张天天 85 85 朱莉 56 36 李乐乐 87 85 第一列为姓名,第二列为语文成绩,第三列为数学成绩,编写一个程序,实现: (1)按要求创建这样 ...

  5. matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件

    matlab 选择文件夹.选择文件GUI和逐一读取文件夹中的文件 1. 选择文件夹路径: filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径 2. ...

  6. matlab在循环中保存jpg格式_Matlab如何循环读取文件

    循环读取图片第一种方法①List =dir('*.jpg'); %如需其它图片格式支持,可以自己[重载dir()]函数,实现查找所有图片文件的功能, %如果图片是其它路径,可以用 ["路径& ...

  7. opencv图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片

    opencv.cpp文件 #include <iostream> #include "opencv.hpp" #include "opencv_test.h& ...

  8. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...

    MATLAB读取文件夹下特定类型格式文件的文件名并读取该格式文件的数据 利用代码对大量数据进行自动批处理时,首先需要获取该数据存放的文件夹(文件夹路径),然后获取该文件夹下某一类型数据所有的文件名,最 ...

  9. r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

最新文章

  1. c/c++ c++ file c++/stl/boost 判断文件目录是否存在
  2. 从汇编代码的角度观察switch与if...else,乘除与移位的差别
  3. 深度学习Caffe 入门理解使用教程
  4. Java编程:排序算法——基数排序
  5. 设备唯一标志的解决方案
  6. 网易云API微信小程序
  7. 极通首次为中小企业量身定制EWEBS极速版
  8. 半导体物理 第七章 金属半导体接触整流理论
  9. linux如何生成awr报告,手工生成AWR报告方法记录
  10. 清除远程桌面的连接记录
  11. 《Automation in Construction》期刊介绍(SCI 2区)
  12. iPad如何分屏?iPad分屏详细教程来啦!
  13. 游戏设计模式-命令模式
  14. 大学生创业知识(转)
  15. 证券中 A、B、C、D字头账号分别代表什么?
  16. 产品经理:你能不能让词云动起来?
  17. 天正安装autocad启动失败_正常安装autocad2013及2014后启动程序显示“应用程序无法正常启动(0xc000007b)错误的解决方法”...
  18. access exex控制pc_access database engine32位-64位版
  19. android加载h5速度慢的解决方案,WebView优化提高H5加载速度方案
  20. Java项目:SSH羽毛球馆管理系统

热门文章

  1. 【4】【实战分布式锁三】SpringBoot注解整合Redisson分布式锁
  2. 5个月营收5.38亿元,康耐特光学上市,眼镜还是暴利行业吗?
  3. PCB中的生产工艺、USB布线、特殊部件、蓝牙天线设计
  4. Vue ajax 同步请求
  5. 4.1【微信小程序全栈开发课程】个人中心(一)--页面样式、用户信息展示
  6. 【新书速递】深入浅出联邦学习
  7. linux修改tomcat端口号为80不起作用
  8. 央行下发85号文 电商平台能跑赢监管吗?
  9. SP服务商收益到底有多大?
  10. 强化学习_07_DataWhale深度Q网络进阶技巧