实现:
1、通过 openFileOutput 保存数据
2、通过 openFileOutput 读取数据
效果:
将数据存入
将数据取出
实现详情:
看了上面的效果图,相信布局应该没问题,而且如果是实际应用的话,还是要结合实际来做
1、通过 openFileOutput 保存数据
其核心代码为:
submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取输入的用户名密码 String names = name.getText().toString(); String pswds = pswd.getText().toString(); FileOutputStream fos = null; try { //获取文件输出流 //MODE_APPEND 检查文件是否存在,存在就往里面追加,不存在就创建一个文件 fos = openFileOutput("login",MODE_APPEND); //保存用户名和密码 fos.write((names + " " + pswds).getBytes()); //清除缓存 fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { //关闭文件输入流 try{ if(fos!=null) fos.close(); } catch (IOException e){ e.printStackTrace(); } } startActivity(new Intent(MainActivity.this,Main2Activity.class)); } });
注意存入时,是通过空格间隔的
2、通过 openFileOutput 读取数据
其核心代码为:
obtian.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FileInputStream fis = null; byte[] buffer = null; try { //获取文件输入流 fis = openFileInput("login"); //定义保存数据的数组 buffer = new byte[fis.available()]; //从输入流中读取数据 fis.read(buffer); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try{ if(fis!=null) fis.close(); }catch(IOException e){ e.printStackTrace(); } } //获取数组中的数据 String data = new String(buffer); String names = data.split(" ")[0]; String pswds = data.split(" ")[1]; one.setText("账号是:" + names); two.setText("密码是:" + pswds); } });
这里用 split(" ") 方法实现数据分离(实际应用时可根据需求灵活运用)
源码:https://github.com/iscopy/Files