当前位置: 移动技术网 > 移动技术>移动开发>Android > 学习笔记-如何在android项目中使用文件存储的技术

学习笔记-如何在android项目中使用文件存储的技术

2020年11月11日  | 移动技术网移动技术  | 我要评论
一、创建新项目,修改activity_main.xml中代码:在布局中加入 一个EditText,用于输入文本内容<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent"

一、创建新项目,修改activity_main.xml中代码:在布局中加入 一个EditText,用于输入文本内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Type something here"
        />
</LinearLayout>

二、在数据被回收之前,将它存储到文件当中,修改MainActivity:
①在onCreate方法中,获取EditText实例、②重写onDestroy方法,保证在活动销毁前调用它、
③调用save方法,把输入内容存储到文件中

public class MainActivity extends AppCompatActivity {
    private EditText edit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edit=(EditText) findViewById(R.id.edit);
        String inputText=load();
        if (!TextUtils.isEmpty(inputText)){
            edit.setText(inputText);
            edit.setSelection(inputText.length());
            Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        String  inputText=edit.getText().toString();
        save(inputText);
    }
    /*
    * 如何将一段内容保存到文件中:
    * Context类提供的openFileOutput方法可以用于将数据存储到指定的文件中,此方法接收两个参数,文件名和文件的操作模式
    * openFileOutput方法返回一个FileOutputStream对象,得到这个对象以后就可以使用java流的方式将数据写入到文件中
    *
    * */
    public void save(String inputText){
        FileOutputStream out=null;
        BufferedWriter writer=null;
        try {
            out=openFileOutput("data", Context.MODE_PRIVATE);
            writer=new BufferedWriter(new OutputStreamWriter(out));
            writer.write(inputText);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

三、运行结果
在这里插入图片描述
输入内容,然后返回,此时输入内容被保存在文件中。验证:
总体思路:找到Android studio Monitor工具查看,新版AS找不到解决方法
在View->Tool Windows->Device File Explorer下面
在这里插入图片描述
找到后如下所示:打开/data/data/com.example.filepersistencetest/files/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到生成的data文件
四、修改MainActivity代码使得重新启动时,EditText保留上次输入的内容:
现在将数据保存下来的功能实现了,接着实现下次程序启动的时候,数据还原到 EditText中,即如何从文件中读取数据

/*
    * 从文件中读取数据:使用Context类提供的openFileInput方法 ,参数是要读取的文件名
    * 通过openFileInput方法获取FileInputStream对象,再构建一个BufferedReader对象,通过BufferedReader
    * 将文本的内容读取并且放在StringBuilder 中,返回读取内容即可
    * */
    public String load(){
        FileInputStream in=null;
        BufferedReader reader=null;
        StringBuilder content=new StringBuilder();
        try {
            in=openFileInput("data");
            reader=new BufferedReader(new InputStreamReader(in));
            String line="";
            while ((line=reader.readLine())!=null){
                content.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return content.toString();
    }

五、运行结果
在这里插入图片描述
输入内容后重新启动程序查看
在这里插入图片描述

完成文件存储!

本文地址:https://blog.csdn.net/lcnana/article/details/109613496

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网