场景

在Android应用中需要将某些文本内容保存到存储器中的txt文件中。

在显示时还需要将txt文件的内容读取加载出来。形成一个简单记事本的效果

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先新建一个Activity并设计页面布局如上,xml布局代码为

<?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=".StoreTextActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:gravity="center_horizontal"android:textSize="18sp"android:textColor="@android:color/black"android:text="记事本"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#FFC8C8C8"/><EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:gravity="start"android:hint="请输入文本"android:inputType="textMultiLine"/><Buttonandroid:id="@+id/btn_save"android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="saveFile"android:text="保存"/>
</LinearLayout>

然后在Activity,在保存按钮的点击事件执行的保存到文件的方法中,将editText的文本内容保存到文件

    /**** 保存到文件* @param str*/public void saveFile(String str){FileOutputStream fos = null;BufferedWriter writer = null;try {fos = openFileOutput("badao.txt", Context.MODE_PRIVATE);writer = new BufferedWriter(new OutputStreamWriter(fos));try {writer.write(str);Toast.makeText(this,"保存成功",Toast.LENGTH_LONG).show();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}finally {if(writer!=null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}if(fos!=null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}

保存成功后,文件会在内部存储下data/data/包名/files下找到

然后在onCreate方法中,首先执行从txt加载内容的方法

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_store_text);editText = findViewById(R.id.edit_text);String str = load();if(!(TextUtils.isEmpty(str))){editText.setText(str);Toast.makeText(this,"加载成功",Toast.LENGTH_LONG).show();}}

在加载内容的方法load中

    /**** 从文件中加载* @return*/public String load(){FileInputStream fis = null;BufferedReader reader = null;StringBuilder content = new StringBuilder();try {fis = openFileInput("badao.txt");reader = new BufferedReader(new InputStreamReader(fis));String str;while ((str=reader.readLine())!=null) {content.append(str);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(reader!=null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}if(fis!=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}return content.toString();}

activity的完整代码

package com.badao.androidstudy;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class StoreTextActivity extends AppCompatActivity {private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_store_text);editText = findViewById(R.id.edit_text);String str = load();if(!(TextUtils.isEmpty(str))){editText.setText(str);Toast.makeText(this,"加载成功",Toast.LENGTH_LONG).show();}}public void saveFile(View view){saveFile(editText.getText().toString());}/**** 从文件中加载* @return*/public String load(){FileInputStream fis = null;BufferedReader reader = null;StringBuilder content = new StringBuilder();try {fis = openFileInput("badao.txt");reader = new BufferedReader(new InputStreamReader(fis));String str;while ((str=reader.readLine())!=null) {content.append(str);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(reader!=null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}if(fis!=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}return content.toString();}/**** 保存到文件* @param str*/public void saveFile(String str){FileOutputStream fos = null;BufferedWriter writer = null;try {fos = openFileOutput("badao.txt", Context.MODE_PRIVATE);writer = new BufferedWriter(new OutputStreamWriter(fos));try {writer.write(str);Toast.makeText(this,"保存成功",Toast.LENGTH_LONG).show();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}finally {if(writer!=null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}if(fos!=null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}
}

运行之后,输入一些文本内容,点击保存

然后退出app重新启动后

Android中实现保存和读取文本文件到内部存储器(实现简易的记事本为例)相关推荐

  1. unityplayerpre存档_Unity3D 中PlayerPrefs保存或读取数组的方法 | 学步园

    Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...

  2. Unity3D 中PlayerPrefs保存或读取数组的方法

    Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...

  3. Dmc雷赛板卡仿写(六):数据在程序中的保存与读取 ,类变量读写,json文件数据读入,ini文件数据读入

    1.类变量读入(之前类的学习中写过) //在.h中实例化了这些类using AxisName = QString;using AxisHash = QMap<AxisName, DmcAxis* ...

  4. matlab读int16读文件_[转载]Matlab中的textread textscan读取文本文件

    1.MATLAB从文本文件中读取格式化的数据函数是textread. 调用方式 [A,B,C,...] = textread('filename','format') [A,B,C,...] = te ...

  5. android中XMl文件的读取

    废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml <Languages cat="1"><lan id="1"> ...

  6. java 文件流读取文本_如何在Java 8中处理流和读取文本文件

    java 文件流读取文本 我已经使用最新的Java8转换了一个旧的实用程序类. 我经常使用它来打印清单文件的内容,以检查任何神秘的jar文件的版本等.只需运行" java ztools.Pr ...

  7. android的读取xml配置文件,android中XMl文件的读取

    废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml java Eclipse Swift Xcode C# Visual Studio 后台: import android.su ...

  8. Android中,Sqlite数据库读取数据为空的问题

    公司使用的触摸屏出现了一个奇怪的问题,在app中读取数据,只是简单的select * from table 也查询不到数据. [问题描述] 后来发现是有两个module单例分别连接数据库,一个modu ...

  9. android中怎么保存checkbox中的checked属性_Vue 精粹:v-model指令在组件中怎么玩

    最近在写组件的时候,遇到了 v-model 的使用问题,在 Vue 官方文档中,有两小端内容是关于 v-model 指令在组件中的使用,查阅文档后,依然不得要领,最后几番折腾,理论结合实践,终于领悟其 ...

最新文章

  1. 随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
  2. c#调用本地命令并截取Output
  3. 12 行列式01---定义、计算 与性质、排列、逆序数、n 阶行列式、上三角形行列、矩阵的初等行变换与行列式性质
  4. PAT L1-019. 谁先倒
  5. 大唐杯 5G协议与信令 任务六、任务七(24:30-35:00)
  6. 主成分分析二级指标权重_(转)确定权重方法之一:主成分分析
  7. 单位计算机ping网关不通,电脑ping不通自己的网关有什么原因(解决ping不通网关的原因)...
  8. 百度竞价账户关键词分类
  9. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释
  10. 使用MATLAB快速提取图片数据
  11. HTTP status Code 412 未满足前提条件的解决方法之一
  12. Day18-sessioncookie
  13. 如何才能招聘到合适的以太坊区块链开发者
  14. (征求意见稿)中国银河证券公募基金分类体系规则文档 (2019版)
  15. 长周期光纤光栅 matlab,长周期光纤光栅传输谱的MATLAB仿真
  16. OC中的数组:NSArray
  17. 2020年英语四级作文
  18. LinuX合成软件,Natron 0.92发布,视频合成软件
  19. coreldraw铺花纹_coreldraw中制作环形花边教程
  20. 第六周学习周记——学习JavaScript

热门文章

  1. CF #737(div2)C. Moamen and XOR 与和异或-找规律
  2. u盘添加veket linux,veket要怎样才能安在u盘上?
  3. linux+dhcp服务的安装包,服务器_Linux教程:配置DHCP服务器方法介绍,  1.安装dhcp软件包 #rpm nd - phpStudy...
  4. EasyExcel 2 上传 下载
  5. matlab与钻井平台,基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计...
  6. redis 内存溢出_Redis为何这么快数据存储角度
  7. android view取坐标点,Android 获取子 View 的位置及坐标的方式
  8. python sns绘制回归线_SVM--支持向量机amp;Python代码
  9. docker连不上宿主机mysql_宿主机连接docker中的mysql
  10. menisa mysql_实例详细说明linux下去除重复行命令uniq