安卓 io流 写入文件,再读取的基本使用
1、布局
布局里面只有一个EditView,通过输入内容之后,当触发 onDestroy 方法时,将输入的数据存储在当前应用的data/data/files文件夹下。
<?xml version="1.0" encoding="utf-8"?><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="com.lpc.project522.MainActivity"><EditTextandroid:id="@+id/et"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入一些信息"/></RelativeLayout>
2、java方法
package com.lpc.project522;import android.app.Activity;import android.content.Context;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.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;public class MainActivity extends Activity {private EditText et;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et = (EditText) findViewById(R.id.et);String inputText = load(); //设置字符串 inputText的值为load方法的返回值if (!TextUtils.isEmpty(inputText)){ //如果inputText的值不为空或者等于空字符串et.setText(inputText);et.setSelection(inputText.length());Toast.makeText(MainActivity.this,"数据恢复完毕",Toast.LENGTH_SHORT).show();}}/*** load方法* 从文件中读取字符串的方法* */private String load() {InputStream in = null; //创建一个输入流BufferedReader reader = null; //创建一个字节流读取器StringBuilder content = new StringBuilder(); //创建一个字符串contenttry {in = openFileInput("lili"); //打开名字为lili的文件,创建输入流reader = new BufferedReader(new InputStreamReader(in)); //将输入流通过输入流读取器读取//再通过字节流读取器读取上面的结果String line = "";while ((line = reader.readLine()) !=null){ //当字符串line不为空的时候,将数据累加到content里content.append(line);}} catch (IOException e) {e.printStackTrace();}return content.toString();}@Override/*** 当销毁view之前,将输入的内容赋予给inputType这个字符串* 再通过save方法将inputType 保存起来* */protected void onDestroy() {super.onDestroy();String inputType = et.getText().toString();save(inputType);}/*** save方法* 保存字符串到文件的方法* */private void save(String inputType) {//创建一个字节流读取器对象BufferedWriter writer = null;//创建一个输出流对象OutputStream out = null;try {//将文件输出为名字叫做lili,模式为覆盖的文件out = openFileOutput("lili", Context.MODE_PRIVATE);//通过字节流读取器读取字符流对象writer = new BufferedWriter(new OutputStreamWriter(out));//将数据写入到字符串inputType中writer.write(inputType);} catch (IOException e) {e.printStackTrace();}finally {if (writer !=null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}}
save方法是 将文件保存的方法
load方法是将文件里的内容读取出来,赋值给Editview。

浙公网安备 33010602011771号