文件存贮

什么是文件存贮:

文件存贮是Android中最基本的一种数据存贮方式,不对存储的内容进行任何形式的格式化处理,所有数据原封不动的保存在文件中,比较适合一些简单的文本数据或二进制数据的存贮。

实例:

1.实现将输入的内容在页面销毁时保存到文件中
2.实现从文件中读取数据
3.将获取的数据展现到控件上

效果展现:

实现步骤:

1.在onDestroy()方法中调用save()方法保存数据到文件中
2.在onCreate()方法中调用loadData()方法从文件中获取数据
3.最后将获取的数据展现到EditText中。

代码实现:
public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //绑定EditText控件
        editText = findViewById(R.id.main_et);

        String content = loadData();
        //通过TextUtils.isEmpty()方法获知字符串是否为空
        if (!TextUtils.isEmpty(content)) {
            //将数据添加到控件中
            editText.setText(content);
            //将光标放到获取数据的后方
            editText.setSelection(content.length());
            Toast.makeText(MainActivity.this, "Restored successful ", Toast.LENGTH_SHORT).show();
        }
    }

    private String loadData() {
        //创建FileInputStream、BufferedReader、StringBuilder对象
        FileInputStream inputStream = null;
        BufferedReader bufferedReader = null;
        StringBuilder stringBuilder = new StringBuilder();
        try {
            //通过调用openFileInput()方法,获得FileInputStream对象
            inputStream = openFileInput("data");
            //通过java流获取数据
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            //创建temp对象,是为了从BufferedReader对象中类似于一行行的读取数据
            String temp = null;
            if ((temp = bufferedReader.readLine()) != null) {
                //美读取一行数据就通过append()方法将一行的数据放入到字符串变量StringBuilder中
                stringBuilder.append(temp);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return stringBuilder.toString();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //获取EidtText中的数据
        String inputData = editText.getText().toString();
        //调用save()方法将数据保存到文件中
        save(inputData);
    }

    private void save(String inputData) {
        //创建FileOutputStream和BufferedWriter对象
        FileOutputStream outputStream = null;
        BufferedWriter bufferedWriter = null;
        try {
            //通过调用openFileOutput()方法获得FileOutputStream对象
            /**
             * param1:文件名,创建文件时要命名的文件名
             * param2:文件操作方式,有两种MODE_PRIVATE:文件名相同时,第二次修改的覆盖第一次写的内容
             * MODE_APPEND:文件名相同时,第二次修改的追加到第一次修改的内容后
             */
            outputStream = openFileOutput("data", Context.MODE_PRIVATE);
            //使用java流的方式将数据保存到文件中
            //下面就是不断的获得对象,最后后的BufferedWriter对象,调用write()方法将内容写到文件中
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
            bufferedWriter.write(inputData);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bufferedWriter != null) {
                try {
                    //关闭BufferedWriter
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
over
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

intoSunshine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值