Как я могу записать во внешний текстовый файл без перезаписи текущего содержимого в 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 это включить режим добавления.

Другие вопросы по тегам