Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何添加到文件而不更改内容(JAVA)?_Java_File_Readfile - Fatal编程技术网

如何添加到文件而不更改内容(JAVA)?

如何添加到文件而不更改内容(JAVA)?,java,file,readfile,Java,File,Readfile,因此,我正在创建一个基本的通讯簿应用程序,以获得乐趣。我希望用户能够单击(添加到书本)按钮,将当前输入的信息保存到Address book.txt文件中。问题是我当前使用的代码会删除所有文件内容,只会添加新条目。在不删除内容的情况下,向文件中添加内容的好方法是什么?如果不可能,存储所有文件数据并重新输入Address Book.txt文件的好方法是什么 PrintWriter writer; String x = String.format("Name:

因此,我正在创建一个基本的通讯簿应用程序,以获得乐趣。我希望用户能够单击(添加到书本)按钮,将当前输入的信息保存到Address book.txt文件中。问题是我当前使用的代码会删除所有文件内容,只会添加新条目。在不删除内容的情况下,向文件中添加内容的好方法是什么?如果不可能,存储所有文件数据并重新输入Address 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);
}
这是我的密码

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) {
     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);
}
我打算用它来读取文本文件中的所有内容,并将其保存到字符串ArrayList(数据)中,但信息会以奇怪的方式打印在文件中

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

}

FileInputStream
设置为追加而不是截断的文件创建
PrintWriter

     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);
}
writer = new PrintWriter(new FileOutputStream(name, true));

而不是<代码> PrimWrutter < /C> >考虑使用Auth<代码>附录< /COD> SET到<代码> Trime< /Calp>

     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);
}
Writer w = new FileWriter(name, true);
PrintWriter pw = new PrintWriter(w);
....
pw.flush();
pw.close();
w.flush();
w.close();

工作得很好,非常感谢!!!