Android中实现保存和读取文本文件到内部存储器(实现简易的记事本为例)
场景
在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中实现保存和读取文本文件到内部存储器(实现简易的记事本为例)相关推荐
- unityplayerpre存档_Unity3D 中PlayerPrefs保存或读取数组的方法 | 学步园
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
- Unity3D 中PlayerPrefs保存或读取数组的方法
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
- Dmc雷赛板卡仿写(六):数据在程序中的保存与读取 ,类变量读写,json文件数据读入,ini文件数据读入
1.类变量读入(之前类的学习中写过) //在.h中实例化了这些类using AxisName = QString;using AxisHash = QMap<AxisName, DmcAxis* ...
- matlab读int16读文件_[转载]Matlab中的textread textscan读取文本文件
1.MATLAB从文本文件中读取格式化的数据函数是textread. 调用方式 [A,B,C,...] = textread('filename','format') [A,B,C,...] = te ...
- android中XMl文件的读取
废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml <Languages cat="1"><lan id="1"> ...
- java 文件流读取文本_如何在Java 8中处理流和读取文本文件
java 文件流读取文本 我已经使用最新的Java8转换了一个旧的实用程序类. 我经常使用它来打印清单文件的内容,以检查任何神秘的jar文件的版本等.只需运行" java ztools.Pr ...
- android的读取xml配置文件,android中XMl文件的读取
废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml java Eclipse Swift Xcode C# Visual Studio 后台: import android.su ...
- Android中,Sqlite数据库读取数据为空的问题
公司使用的触摸屏出现了一个奇怪的问题,在app中读取数据,只是简单的select * from table 也查询不到数据. [问题描述] 后来发现是有两个module单例分别连接数据库,一个modu ...
- android中怎么保存checkbox中的checked属性_Vue 精粹:v-model指令在组件中怎么玩
最近在写组件的时候,遇到了 v-model 的使用问题,在 Vue 官方文档中,有两小端内容是关于 v-model 指令在组件中的使用,查阅文档后,依然不得要领,最后几番折腾,理论结合实践,终于领悟其 ...
最新文章
- 随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
- c#调用本地命令并截取Output
- 12 行列式01---定义、计算 与性质、排列、逆序数、n 阶行列式、上三角形行列、矩阵的初等行变换与行列式性质
- PAT L1-019. 谁先倒
- 大唐杯 5G协议与信令 任务六、任务七(24:30-35:00)
- 主成分分析二级指标权重_(转)确定权重方法之一:主成分分析
- 单位计算机ping网关不通,电脑ping不通自己的网关有什么原因(解决ping不通网关的原因)...
- 百度竞价账户关键词分类
- ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释
- 使用MATLAB快速提取图片数据
- HTTP status Code 412 未满足前提条件的解决方法之一
- Day18-sessioncookie
- 如何才能招聘到合适的以太坊区块链开发者
- (征求意见稿)中国银河证券公募基金分类体系规则文档 (2019版)
- 长周期光纤光栅 matlab,长周期光纤光栅传输谱的MATLAB仿真
- OC中的数组:NSArray
- 2020年英语四级作文
- LinuX合成软件,Natron 0.92发布,视频合成软件
- coreldraw铺花纹_coreldraw中制作环形花边教程
- 第六周学习周记——学习JavaScript
热门文章
- CF #737(div2)C. Moamen and XOR 与和异或-找规律
- u盘添加veket linux,veket要怎样才能安在u盘上?
- linux+dhcp服务的安装包,服务器_Linux教程:配置DHCP服务器方法介绍, 
1.安装dhcp软件包 
#rpm nd - phpStudy...
- EasyExcel 2 上传 下载
- matlab与钻井平台,基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计...
- redis 内存溢出_Redis为何这么快数据存储角度
- android view取坐标点,Android 获取子 View 的位置及坐标的方式
- python sns绘制回归线_SVM--支持向量机amp;Python代码
- docker连不上宿主机mysql_宿主机连接docker中的mysql
- menisa mysql_实例详细说明linux下去除重复行命令uniq