Не сохраняется информация в файл при аварийном отключении питания

Есть два метода, один для записи строки в файл, другой для чтения.

 public void onSaveButtonClick(View view) {
    String text = binding.etSave.getText().toString();
    if (text.isEmpty()) {
        Toast.makeText(this, R.string.empty_text_error, Toast.LENGTH_SHORT).show();
        return;
    }

    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), FILE_NAME);      
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
        writer.write(text);
        Log.d("logtest write", text);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

    public void onReadButtonClick(View view) {
    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), FILE_NAME);      //read from external files dir
    try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
        String text = reader.readLine();
        Log.d("logtest read", text);
        binding.etLoad.setText(text);
    } catch (IOException e) {
        e.printStackTrace();
    }

}

Провожу эксперимент, записываю новые данные в файл, вычитываю из файла, вижу новые данные. Отключаю батарею, подключаю обратно, запускаю устройство и ПО, вычитываю данные - данные старые. Т.е. новые данные не сохранились.

Насколько я понимаю, что при первой вычитке я получаю закэшированные данные, которые из-за аварийного отключения питания ОС не успевает записать физически. Я прав или нет? И как можно решить эту проблему?


Ответы (0 шт):