【问题标题】:How to write a String line to a file every-time I press the "Write" Button每次按下“写入”按钮时如何将字符串行写入文件
【发布时间】:2012-08-13 16:00:00
【问题描述】:

这是我的代码..当我按下按钮时它只能在文件中写入一行但是,如果我用一组新字符再次按下它,它只会删除旧字符并存储新的字符集.我不知道如何让它在每次按下按钮时在不同的行中写入字符而不删除其他行

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

                            } 
                        });


    }
}

【问题讨论】:

  • FileWriter 的构造函数接受第二个参数:boolean append,您可以使用它来追加而不是覆盖。基本上,使用FileWriter writer = new FileWriter(file, true)

标签: java io save java-io read-write


【解决方案1】:

你需要设置FileWriter通过构造函数追加..

FileWriter writer = new FileWriter(file, true)

docs

【讨论】:

    【解决方案2】:

    哇,在一个声明中发生了很多事情。这不是我最喜欢的处理方式,但这不是你的问题.. :-) 当你创建一个新的 FileWriter 时,它会创建一个新文件,所以你只能看到一行文本..

    查看 API - FileWriter 有一个构造函数,它接受一个布尔值来决定是否追加。你想用它来代替。

    另一种选择是打开文件一次,然后每次按下都写入它。如果您希望在每次写入时打开/关闭文件,那么使用另一个 ctor 是更好的方法。

    【讨论】:

    • 你可以看到伙计们,我问你的方式,似乎是编程语言“Java”这个领域的新手,我就是那个人。我只是自学而已。但是谢谢伙计们!
    • 没问题 - Java API 应该是您自学时最好的朋友。. 一些 API 新手跳过 ctors 并直接进入方法列表,但始终记得检查重载的ctors,尤其是对于这类事情,因为通常有一种很好的方法来处理它。通常,困难的部分是发现“FileWriter”是您想要的类,但是一旦您知道这一点,您需要的几乎所有东西都在 API 中。祝你好运!
    猜你喜欢
    • 2011-02-24
    • 2020-05-20
    • 2019-09-23
    • 2012-04-15
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多