zoukankan      html  css  js  c++  java
  • 安卓 io流 写入文件,再读取的基本使用

    1、布局


    布局里面只有一个EditView,通过输入内容之后,当触发 onDestroy 方法时,将输入的数据存储在当前应用的data/data/files文件夹下。

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:tools="http://schemas.android.com/tools"
    4. android:layout_width="match_parent"
    5. android:layout_height="match_parent"
    6. android:paddingBottom="@dimen/activity_vertical_margin"
    7. android:paddingLeft="@dimen/activity_horizontal_margin"
    8. android:paddingRight="@dimen/activity_horizontal_margin"
    9. android:paddingTop="@dimen/activity_vertical_margin"
    10. tools:context="com.lpc.project522.MainActivity">
    11. <EditText
    12. android:id="@+id/et"
    13. android:layout_width="match_parent"
    14. android:layout_height="wrap_content"
    15. android:hint="请输入一些信息"/>
    16. </RelativeLayout>

    2、java方法

    1. package com.lpc.project522;
    2. import android.app.Activity;
    3. import android.content.Context;
    4. import android.os.Bundle;
    5. import android.text.TextUtils;
    6. import android.widget.EditText;
    7. import android.widget.Toast;
    8. import java.io.BufferedReader;
    9. import java.io.BufferedWriter;
    10. import java.io.IOException;
    11. import java.io.InputStream;
    12. import java.io.InputStreamReader;
    13. import java.io.OutputStream;
    14. import java.io.OutputStreamWriter;
    15. public class MainActivity extends Activity {
    16. private EditText et;
    17. @Override
    18. protected void onCreate(Bundle savedInstanceState) {
    19. super.onCreate(savedInstanceState);
    20. setContentView(R.layout.activity_main);
    21. et = (EditText) findViewById(R.id.et);
    22. String inputText = load(); //设置字符串 inputText的值为load方法的返回值
    23. if (!TextUtils.isEmpty(inputText)){ //如果inputText的值不为空或者等于空字符串
    24. et.setText(inputText);
    25. et.setSelection(inputText.length());
    26. Toast.makeText(MainActivity.this,"数据恢复完毕",Toast.LENGTH_SHORT).show();
    27. }
    28. }
    29. /**
    30. * load方法
    31. * 从文件中读取字符串的方法
    32. * */
    33. private String load() {
    34. InputStream in = null; //创建一个输入流
    35. BufferedReader reader = null; //创建一个字节流读取器
    36. StringBuilder content = new StringBuilder(); //创建一个字符串content
    37. try {
    38. in = openFileInput("lili"); //打开名字为lili的文件,创建输入流
    39. reader = new BufferedReader(new InputStreamReader(in)); //将输入流通过输入流读取器读取
    40. //再通过字节流读取器读取上面的结果
    41. String line = "";
    42. while ((line = reader.readLine()) !=null){ //当字符串line不为空的时候,将数据累加到content里
    43. content.append(line);
    44. }
    45. } catch (IOException e) {
    46. e.printStackTrace();
    47. }
    48. return content.toString();
    49. }
    50. @Override
    51. /**
    52. * 当销毁view之前,将输入的内容赋予给inputType这个字符串
    53. * 再通过save方法将inputType 保存起来
    54. * */
    55. protected void onDestroy() {
    56. super.onDestroy();
    57. String inputType = et.getText().toString();
    58. save(inputType);
    59. }
    60. /**
    61. * save方法
    62. * 保存字符串到文件的方法
    63. * */
    64. private void save(String inputType) {
    65. //创建一个字节流读取器对象
    66. BufferedWriter writer = null;
    67. //创建一个输出流对象
    68. OutputStream out = null;
    69. try {
    70. //将文件输出为名字叫做lili,模式为覆盖的文件
    71. out = openFileOutput("lili", Context.MODE_PRIVATE);
    72. //通过字节流读取器读取字符流对象
    73. writer = new BufferedWriter(new OutputStreamWriter(out));
    74. //将数据写入到字符串inputType中
    75. writer.write(inputType);
    76. } catch (IOException e) {
    77. e.printStackTrace();
    78. }finally {
    79. if (writer !=null){
    80. try {
    81. writer.close();
    82. } catch (IOException e) {
    83. e.printStackTrace();
    84. }
    85. }
    86. }
    87. }
    88. }

    save方法是 将文件保存的方法

    load方法是将文件里的内容读取出来,赋值给Editview。




  • 相关阅读:
    Phpstudy升级到Mysql8
    PHP 匿名函数使用技巧
    PHP 中的CURL 模拟表单的post提交
    Go中局部全局变量的区分
    Php中的goto用法
    struct的匿名用法详解
    Go中多个返回值的技巧
    C# 多线程之List的线程安全问题
    C# 多线程七之Parallel
    C# 多线程六之Task(任务)三之任务工厂
  • 原文地址:https://www.cnblogs.com/liupengcheng/p/5126308.html
Copyright © 2011-2022 走看看