Не сохраняется информация в файл при аварийном отключении питания
Есть два метода, один для записи строки в файл, другой для чтения.
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();
}
}
Провожу эксперимент, записываю новые данные в файл, вычитываю из файла, вижу новые данные. Отключаю батарею, подключаю обратно, запускаю устройство и ПО, вычитываю данные - данные старые. Т.е. новые данные не сохранились.
Насколько я понимаю, что при первой вычитке я получаю закэшированные данные, которые из-за аварийного отключения питания ОС не успевает записать физически. Я прав или нет? И как можно решить эту проблему?