欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-06-16 13:41:25
一、创建新项目,修改activity_main.xml中代码:在布局中加入 一个EditText,用于输入文本内容

一、创建新项目,修改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项目中使用文件存储的技术
输入内容,然后返回,此时输入内容被保存在文件中。验证:
总体思路:找到Android studio Monitor工具查看,新版AS找不到解决方法
在View->Tool Windows->Device File Explorer下面
学习笔记-如何在android项目中使用文件存储的技术
找到后如下所示:打开/data/data/com.example.filepersistencetest/files/
学习笔记-如何在android项目中使用文件存储的技术
学习笔记-如何在android项目中使用文件存储的技术
学习笔记-如何在android项目中使用文件存储的技术
找到生成的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();
    }

五、运行结果
学习笔记-如何在android项目中使用文件存储的技术
输入内容后重新启动程序查看
学习笔记-如何在android项目中使用文件存储的技术

完成文件存储!

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