写入CSV文件时,将覆盖先前的字符串

时间:2016-04-11 18:14:25

标签: java

我正在尝试制作一个简单的程序,将用户输入的样式保存到.CSV文件中。我让它工作到第一次写的地方。

如果我退出或输入第二组值,然后单击“保存”,则会在文件中覆盖上一个字符串。

            try {
                PrintWriter pw = new PrintWriter(new File("customer.csv"));
                StringBuilder sb = new StringBuilder();

                sb.append(merch);
                sb.append(',');
                sb.append(cont);
                sb.append(',');
                sb.append(mail);
                sb.append(',');
                sb.append(cphone);
                sb.append('\n');

                pw.write(sb.toString());
                pw.flush();
                pw.close();

            } catch (FileNotFoundException e1) {
                JOptionPane.showMessageDialog(frame, "File Not     Located");
                e1.printStackTrace();

我尝试添加'sb.append('\ n');'到最后的想法会解决它,但事实并非如此。

3 个答案:

答案 0 :(得分:3)

您需要以追加模式打开文件:

PrintWriter pw = new PrintWriter(new FileWriter("customer.csv", true));

答案 1 :(得分:0)

PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("file.txt", true)));

答案 2 :(得分:0)

如果您使用的是Java 8,则可能需要像以下一样进行清理:

    try(Writer pw = new PrintWriter(new BufferedWriter(new FileWriter("customer.csv", true)))) {
        pw.write(new StringJoiner(",", "", "\n")
            .add(merch)
            .add(cont)
            .add(mail)
            .add(cphone)
            .toString()
        );
    } catch (IOException e1) {
        JOptionPane.showMessageDialog(frame, "File Not Located");
        e1.printStackTrace();
    }