Как я могу записать во внешний текстовый файл без перезаписи текущего содержимого в Java
Я пытаюсь записать пропущенные ответы во внешний текстовый файл. Приведенный ниже метод сохраняет ответы, не распознанные во внешнем текстовом файле, но перезаписывает предыдущий контент. Как я могу остановить это от перезаписи?
// Метод записи списка
public void writeAList(ArrayList<String> list, String filename)
{
if(list != null) {
try (FileWriter writer = new FileWriter(filename)) {
for(String item : list) {
writer.write(item.trim());
writer.write('\n');
}
}
catch(IOException e) {
System.out.println("Problem writing file: " + filename +
" in writeAList");
}
}
else {
System.out.println("Null list passed to writeAList.");
}
}
// Я вызываю это в этом методе
public String generateResponse(ArrayList<String> words)
{
Iterator<String> it = words.iterator();
while(it.hasNext()) {
String word = it.next();
String response = responseMap.get(word);
if(response != null) {
return response;
}
}
//If we get here, none of the words from the input line was recognized
//In this case, a default response is returned
//The words not recognised are stored in "missed.txt"
helper.writeAList(words,"missed.txt");
return pickDefaultResponse();
}
2 ответа
Вместо new FileWriter(filename)
пытаться
new FileWriter(filename, true)
Который создает средство записи файлов в режиме добавления, смотрите здесь документы
В вашем коде вам необходимо заменить:
FileWriter writer = new FileWriter(filename)
С:
FileWriter writer = new FileWriter(filename, true)
Где дополнительный параметр true
это включить режим добавления.