2013-03-24 70 views
1

嗨即时尝试创建一个单词列表使用.txt文件,其中我从JOptionPane窗口中输入用户的输入并将其存储在文本文件的新行。我遇到的问题是,当我输入多个单词时,它会覆盖已存在的数据。我希望它跳过一行并将其添加到当前列表中。这是我有的代码:需要停止txt文件中的文字覆盖JAVA

public static void Option1Method() throws IOException 
{ 
    FileWriter aFileWriter = new FileWriter("wordlist.txt"); 
    PrintWriter out = new PrintWriter(aFileWriter); 
    String word = JOptionPane.showInputDialog(null,"Enter word or phrase: "); 

    out.println(word); 

    out.close(); 
    aFileWriter.close(); 
} 

回答

0

问题是您在方法结束时关闭流。每次调用它时,都会重新创建FileWriter和PrintWriter,接受输入,将其添加到文件中,然后再次关闭它。解决这个问题的一个方法是创建一个静态的String对象,并且每次将用户输入添加到它。在程序结束时,将该字符串写入文件,然后关闭它。

1

只是把真正的FileWriter的结束使得其切换到附加模式:

public static void Option1Method(){ 
    FileWriter aFileWriter = null; 
    PrintWriter out = null; 
     try { 
     aFileWriter = new FileWriter("wordlist.txt",true); 
     out = new PrintWriter(aFileWriter); 
     String word = JOptionPane.showInputDialog(null, "Enter word or phrase: "); 
     out.println(word); 
     } catch (IOException iOException) { 
     } catch (HeadlessException headlessException) { 
     } finally { 
     out.close(); 
     try { 
      aFileWriter.close(); 
     } catch (IOException iOException) { 
     } 
     } 
}