2012-08-13 83 views
0

這是我的代碼..當我按下按鈕時,它只能在文件中寫入一行,但如果再次按下它一組新的字符,它只會刪除舊字符並存儲新的字符集。我不知道如何使它寫字在不同的線路,每次我按下按鈕,而不刪除其他線路如何在每次按「寫入」按鈕時將字符串行寫入文件

package datasaving; 

import java.awt.HeadlessException; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import javax.swing.*; 


public class Datasaving { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     JPanel panel = new JPanel(); 
     JFrame frame = new JFrame(); 
     final JTextField input = new javax.swing.JTextField(20); 

     JButton save = new javax.swing.JButton("Write"); 

     frame.add(panel); 
     frame.setSize(200,200); 
     panel.add(input); 
     panel.add(save); 


     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

     save.addActionListener(new ActionListener() { 
          @Override 
          public void actionPerformed(ActionEvent e) { 
           File file = new File("data.dat"); 

    try { 
      try (FileWriter writer = new FileWriter(file)) { 

       writer.write(input.getText()+"\n"); 

      } 
     System.out.println("Game saved"); 
    } catch (IOException | HeadlessException z) { 
     JOptionPane.showMessageDialog(null, e); 
    } 

          } 
         }); 


    } 
} 
+2

'FileWriter'的構造函數接受第二個參數:'boolean append',您可以使用**追加**而不是覆蓋。基本上,使用'FileWriter作家=新FileWriter(文件,真)' – Aziz 2012-08-13 16:03:25

回答

1

哇,這就是在一個聲明中發生了很多事情。不是我最喜歡的方式來處理,但這不是你的問題.. :-)當你創建一個新的FileWriter它會創建一個新的文件,所以你只能看到一行文字..

看看API - 有一個FileWriter的構造函數,它需要一個布爾值來判斷是否要追加或不使用..你想使用它。

另一種方法是打開文件一次,然後每次按下就寫入它。如果你想在每次寫入時打開/關閉文件,那麼使用其他ctor是更好的方法。

+0

你可以看到球員,我的方式,我質疑你,看起來像在這個領域的Java編程語言的新手,以及我是那個人。 我只是自學。 但謝謝你! – JFetz2191 2012-08-13 16:15:58

+0

沒問題 - 在自學的時候,Java API應該是你最好的朋友。一些對API不熟悉的人跳過了Ctors並轉到了方法列表,但總是記得檢查是否有過載的Ctors,特別是對於這種類型的因爲通常有很好的方法來處理它。通常,最難的部分是找到「FileWriter」是你想要的類的事實,但一旦你知道了,幾乎你需要的所有東西都在API中。祝你好運! – daroo 2012-08-13 16:37:29

2

您需要設置FileWriter通過構造追加..

FileWriter writer = new FileWriter(file, true) 

docs