2016-03-29 10 views
-1

私は楽しみのための基本的なアドレス帳アプリケーションを作成しています。ユーザーが(ブックに追加)ボタンをクリックして、Address Book.txtファイルに入力された現在の情報を保存できるようにします。問題は、私が現在使用しているコードはすべてのファイルの内容を消去し、新しいエントリだけを追加することです。内容を削除せずにファイルに追加するか、またはすべてのファイルデータを保存してAddress Book.txtファイルに再入力するのが良い方法はありませんか?ここで内容を変更せずにファイルに追加する方法(JAVA)?

は私のコード

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.*; 
import java.util.*; 

public class AddressBook extends JFrame{ 
//Create fields 
    public ArrayList<String> data; 
    public JTextField name,address,number; 
    private JButton addStuff; 
//Create the constructor for the Phone book 
    public AddressBook(){ 
     //set the layout 
     setLayout(new FlowLayout()); 
     //Create instances of fields and give properties 
     name = new JTextField("(Name)"); 
     name.setPreferredSize(new Dimension(200,20)); 
     address = new JTextField("(Address)"); 
     address.setPreferredSize(new Dimension(290,20)); 
     number = new JTextField("(Number)"); 
     number.setPreferredSize(new Dimension(100,20)); 
     //create a save button and add functionality 
     addStuff = new JButton("Add to Book"); 
     addStuff.addActionListener(
       new ActionListener(){ 



@Override 
        public void actionPerformed(ActionEvent e) { 

である私は、ファイルのアドレスBook.txtにアクセスして書き込むための方法を作成し、それは私が

 PrintWriter writer; 
       String x = String.format("Name: %s Number: %s Address: %s ", name.getText(),number.getText(),address.getText()); 
       String name = "Address Book.txt"; 
      try { 
       writer = new PrintWriter(name, "UTF-8"); 
       writer.println(x); 
//Go to new line to write info to 
        writer.println(""); 

        writer.close(); 
        } 
       catch (FileNotFoundException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
         } 
       catch (UnsupportedEncodingException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
         } 

        } 
       } 
      ); 
    add(name); 
    add(address); 
    add(number); 
    add(addStuff); 
} 

を行うときに、私はすべてのデータを消去しているようですこれを使ってテキストファイル内のすべてのものを読み込んでString ArrayList(データ)に保存しましたが、情報がファイル内で奇妙に表示されていました。

private class ReadFile { 

     private Scanner x; 

     public void openFile(){ 
      try{ 
       x = new Scanner(new File("Address Book.txt")); 
      } 
      catch(Exception e) 
      { 
       System.out.println("File not found or something"); 
      } 

     } 
     public void readFile(){ 
      while(x.hasNext()){ 
       String a = x.next(); 
       data.add(a); 
      } 
     } 
    } 

} 

答えて

1

代わりのPrintWritertrue

Writer w = new FileWriter(name, true); 
PrintWriter pw = new PrintWriter(w); 
.... 
pw.flush(); 
pw.close(); 
w.flush(); 
w.close(); 
1

切り捨てるのではなく、追加するFileInputStreamセットから自分のPrintWriterを作成します。

writer = new PrintWriter(new FileOutputStream(name, true)); 
+0

FileWriterappendとのセットを使用することを検討して完璧なので、あなたに感謝勤務多く! –

関連する問題