Android数据存储 ——文件存储

文件存储


    1、将数据存储到文件中

        Context中有openFileOutPut方法,可将数据存到指定文件中,方法接收两个参数,一个是文件名,没有路径,因为自动存储到/data/data/<package name>/files/目录下的。第二个参数是文件的操作模式,主要是两种模式MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE是默认的操作模式,表示有同样文件名的时候所写入的内容会覆盖原文件中的内容,而MODE_APPEND表示如果文件已经存在,则追加内容,不创建新文件。

        openFileOutPut方法返回的是一个FileOutPutStream对象,得到这个对象之后就可以使用Java流的方式将数据写到文件中了。

public class MainActivity extends AppCompatActivity {
private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.et_IO);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    String inputText = editText.getText().toString();
    save(inputText);

    }

    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 {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

查看保存的data.txt文件


可以发现EditText中输入的内容确实已经保存到文件中了

2、从文件中读取数据

public class MainActivity extends AppCompatActivity {
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.et_IO);
        String inputText = load();
        if (!TextUtils.isEmpty(inputText)){
            editText.setText(inputText);
            editText.setSelection(inputText.length());
            Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();
        }
    }

    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();
    }
}

猜你喜欢

转载自blog.csdn.net/CASTANEA/article/details/80210942