数据存储之文件存储

这个星期公司没啥事情可做,闲的没啥事做!又温习了一遍数据存储方面的基础东西。
写的东西的效果就是 ,第一次在editText上面输入了数据,在销毁的时候并保存了数据,然后在第二次进来的时候,读取先前的数据,并显示出来!直接上代码,代码上面有注释

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mEditText = (EditText) findViewById(R.id.edit);
        String load = load();
        if(!TextUtils.isEmpty(load)) {
            mEditText.setText(load);
            /**
             * 将光标移到末尾,以便继续输入*/
            mEditText.setSelection(mEditText.length());
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //保存数据
        save(mEditText.getText().toString());
    }

    //保存数据
    private void save(String data) {
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            /**
             * "dataFile" 表示保存数据的文件名(在读取数据时,也是根据文件名去读取的),并且
             *    文件默认存储的路径在 /data/data/<packagename>/File下
             * Context.MODE_APPEND 表示文件名如果存在,就往里面追加内容,不纯在就创建新的文件
             * Context.MODE_PRIVATE 表示指定同样的文件名时,所写入的内容会覆盖原文件内容
             *
             * 要查看里面的文件的时候,需要点击as导航栏中的Tools-->Android-->Android Device Monitor
             *      并在File Explorer标签页下,按照以前的路径即可找到,最后在导出到电脑查看
             * */
            out = openFileOutput("dataFile", Context.MODE_APPEND);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(data);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if (writer != null){
                    writer.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    //读取数据
    private String load(){
        FileInputStream inputStream = null;
        BufferedReader bufferedReader = null;
        StringBuilder builder = new StringBuilder();
        try {
            inputStream = openFileInput("dataFile");
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line ;
            while ((line =bufferedReader.readLine())!= null ){
                builder.append(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try{
                if(bufferedReader != null) {
                    bufferedReader.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return builder.toString();
    }
}

以上:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值