Я пытаюсь добавить элемент в список, который хранится в файле.И я испытываю странное поведение при создании экземпляра FileWriter для этого.Если значение «true» передается параметру «appended» в конструкторе (новый BufferedWriter (новый FileWriter (имя файла, true))), элемент не добавляется в список.Если я не передам параметр, элемент добавляется в список, но каждый раз перезаписывает существующий.Может ли кто-нибудь помочь мне с этим?
Что я пробовал:
-использование FileOutputStream
- результат один и тот же, всегда перезаписывая элементы.
-добавлен Context.MODE_PRIVATE
- результат один и тот же, всегда перезаписываются элементы.
- bw.append(convertTaskToGson(task));
private List<Task> fillListFromGson(FileInputStream imputeStream) {
BufferedReader bufferedReader = prepareReadingFromFile(imputeStream);
String receiveString;
List<Task> taskList = new ArrayList<>();
try {
while ((receiveString = bufferedReader.readLine()) != null) {
stringBuilder.append(receiveString);
String jsonNewObject = stringBuilder.toString();
Task task = gson.fromJson(jsonNewObject, Task.class);
taskList.add(task);
}
return taskList;
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG_INTERNAL_FILE_ERROR, "cannot fill list from gson");
return null;
}
}
private boolean saveTaskToInternalStorage(Task task) {
BufferedWriter bw = null;
try {
File file = new File(AppClass.getApplication().getFilesDir(), filename);
bw = new BufferedWriter(new FileWriter(filename, true));
bw.write(convertTaskToGson(task));
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
return false;
} finally {
if (bw != null)
try {
bw.close();
return true;
} catch (IOException ioe2) {
return false;
}
} return true;
}
}
Ожидаемый результат: новые элементы будут добавлены в конец файла.