2016-03-29 14 views
-1

Bu yüzden eğlence için temel bir Adres defteri uygulaması oluşturuyorum. Kullanıcının Address Book.txt dosyasına girilen mevcut bilgileri kaydetmek için (Kitap ekle) düğmesine basabilmesini istiyorum. Sorun şu anda kullandığım kod tüm dosya içeriğini siliyor ve sadece yeni girdiye ekler. İçeriği silmeden dosyaya eklemenin iyi bir yolu ne olurdu yoksa bu mümkün değilse, tüm dosya verilerini saklamak ve Adres Defteri.txt dosyasına yeniden girmek için iyi bir yol nedir? İşte İçeriği değiştirmeden nasıl dosya ekleyebilirim (JAVA)?

erişebilir ve dosya Adres book.txt yazmak için bir yol oluşturun

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) { 

kodum, ama ben

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

I yaptığınızda tüm verileri silme gibi görünüyor metin dosyasındaki tüm maddeleri okumak ve bunu bir String ArrayList'e (veri) kaydetmek için kullanacaktı, ancak bilgiler dosyada tuhaf yazılmış çıktı. senin PrintWriter yerine kesilmiş kısmının sonuna eklenecek bir FileInputStream kümesinden oluşturma

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

} 

cevap

1

yerine PrintWriter bir FileWriterappend ile seti kullanılarak düşünmek true

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

:

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

Mükemmel çalıştı çok teşekkür ederim çok!!! –