2015-11-26 88 views
-1

我正在尝试向外部文本文件写入未接答复。下面的方法存储的响应未被识别到外部文本文件中,但会覆盖以前的内容。我如何阻止它被覆盖?如何在不覆盖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

这可能帮助:http://stackoverflow.com/questions/ 1225146/java-filewriter-with-append-mode – Atri

回答

0

在代码中调用它,你需要更换:

FileWriter writer = new FileWriter(filename) 

附:

FileWriter writer = new FileWriter(filename, true) 

其中附加参数true用于启用附加模式。取而代之的 new FileWriter(filename)

+0

完美谢谢,还有一个问题,我该如何将响应放在新行上?目前它只是把一切写成一行? –

+0

@ashutosh看起来你正在添加一个新行,所以它可能只是你正在使用的编辑器来查看没有显示\ n的文件作为新行尝试将\ n更改为\ r \ n –

1

尝试

new FileWriter(filename, true) 

它将创建追加模式文件写入,请参阅该文档here

相关问题