【Android Studio】数据持久化(一)文件存储
Java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; 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.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; public class MainActivity extends AppCompatActivity { private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText=findViewById(R.id.edit); //读取上一次数据 String oldInput=load(); if(!TextUtils.isEmpty(oldInput)){ editText.setText(oldInput); //调整光标到最末尾 editText.setSelection(oldInput.length()); Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show(); } } @Override protected void onDestroy() { super.onDestroy(); //销毁前保存输入的数据 String inputText =editText.getText().toString(); //调用方法保存 save(inputText); } public void save(String inputText){ FileOutputStream out=null; BufferedWriter writer=null; try{ //通过openFileOutput得到一个FileOutputStream对象,往文件名称为data写入数据 out=openFileOutput("data", Context.MODE_PRIVATE); //通过BufferedWriter和OutputStreamWriter创建一个BufferedWriter对象 writer=new BufferedWriter(new OutputStreamWriter(out)); //通过这个BufferedWriter对象来写入数据 writer.write(inputText); } catch (IOException e) { e.printStackTrace(); } finally { try { if(writer!=null){ //关闭writer writer.close(); } }catch (IOException e){ e.printStackTrace(); } } } public String load(){ FileInputStream in=null; BufferedReader reader=null; //读取到的数据保存在这里 StringBuilder stringBuilder=new StringBuilder(); try{ in=openFileInput("data"); reader=new BufferedReader(new InputStreamReader(in)); //以一行为单位进行保存 String line=""; //先读一行然后保存在line上,如果line不为空就添加入stringBuilder中 while ((line=reader.readLine())!=null){ stringBuilder.append(line); } } catch (IOException e) { e.printStackTrace(); }finally { if(reader!=null){ try { reader.close(); }catch (IOException e){ e.printStackTrace(); } } } return stringBuilder.toString(); } }
activity_main.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" tools:context=".MainActivity"> <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="试着输写什么"/> </LinearLayout>

浙公网安备 33010602011771号