-1

我正在尝试将错过的响应写入外部文本文件。以下方法将无法识别的响应存储到外部文本文件中,但会覆盖以前的内容。如何阻止它被覆盖?

//写一个列表方法

       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();

}
4

2 回答 2

1

代替 new FileWriter(filename)

尝试

new FileWriter(filename, true)

它以附加模式创建文件编写器,请参阅此处的文档

于 2015-11-26T20:22:09.630 回答
0

在您的代码中,您需要替换:

FileWriter writer = new FileWriter(filename)

和:

FileWriter writer = new FileWriter(filename, true)

其中额外的参数true是启用附加模式。

于 2015-11-26T20:18:04.720 回答