1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > AndroidStudio中利用openFileOutput将数据保存在文件中 利用openFileInput读取文件中的数据

AndroidStudio中利用openFileOutput将数据保存在文件中 利用openFileInput读取文件中的数据

时间:2019-11-22 02:47:55

相关推荐

AndroidStudio中利用openFileOutput将数据保存在文件中 利用openFileInput读取文件中的数据

一、要实现的功能

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

二、基本知识

利用活动生命周期中的一个回调函数onDestroy(),在活动被销毁之前,将数据写入到文件当中。例如按下返回键的时候,活动就被销毁,这个方法里面的代码就会被执行。利用TextUtils中的isEmpty(CharSequence str)方法可以轻松地判断一个字符串变量是不是null,以及这个字符串是不是空字符串(字符串长度为0)。java中传统的方式是这么写的:

if(string!=null&&string.length()!=0)

,这种方式比较麻烦,用TextUtils的话就比较方便了。① 利用Contex类中的openFileOutput(String name, int mode)方法可以获取一个FileOutputStream对象,这个方法第一个参数传入的是文件名,第二个参数是文件的操作模式,取值主要有MODE_PRIVATE、 MODE_APPEND,如果文件已经存在了,第一种方式会把文件中原来的内容覆盖掉,第二种方式则是在原来的基础上进行追加数据。

②利用Contex类中的openFileInput(String name)可以获取一个FileInputStream对象,方法中传入的参数是文件的名称。

除此之外,文件的读写操作就没有什么特殊的了,用到的都是JDK中的IO知识,这里还用到了缓冲字符流,主要是为了提高读取、写入的速度。

三、代码

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();}}

布局代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/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="请输入您要保存的信息"/>

四、截图

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

输入要保存的文字信息:

文件保存以后,下次再打开程序:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。