【问题标题】:BufferedWriter prevent overwritingBufferedWriter 防止覆盖
【发布时间】:2019-05-21 10:37:35
【问题描述】:

我有一个 BufferedWriter,它已经写入了一个文件,但不是以我想要的方式。 我在循环中对其进行初始化,使其仅附加循环的最后一个结果以添加到文件中。 实际上这对我来说没问题,但文件中以前的结果被删除了。 我希望在不删除之前的结果的情况下添加结果。

我尝试创建静态缓冲阅读器,以便不总是在循环中创建缓冲阅读器的新实例。 但这是不可能的,因为你需要一个“try”块。

public void actionPerformed(ActionEvent e) {
            String s;
            try {
                if (parseInt(jTextFieldNumber.getText()) == random) {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> correct!");
                    ok.setEnabled(false);
                } else if (parseInt(jTextFieldNumber.getText()) < random) 
{
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too small!");
                } else {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too big!");
                }
            } catch (NumberFormatException nfe) {
                nfe.printStackTrace();
                System.exit(0);
            }
                s = jTextFieldName.getText() + " " + counter;
                BufferedWriter bw;
                try {
                    bw = new BufferedWriter(new 
FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name"));
                    bw.append(s);
                    if(info.getText().equals("Attempt # " + counter + ": 
" + parseInt(jTextFieldNumber.getText()) + " ==> correct!")){
                        bw.close();
                    }
                } catch (IOException io) {
                    io.printStackTrace();
                }
            counter++;
        }
    };

【问题讨论】:

标签: java actionlistener bufferedwriter


【解决方案1】:

我认为您是在询问如何附加到文件,即使您正在创建新的 BufferedWriters。

使用第二个参数为true的文件写入器,像这样:

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

参考: How to append text to an existing file in Java

【讨论】:

    【解决方案2】:

    FileWriter 有一个构造函数public FileWriter(String fileName, boolean append) throws IOException。 如果你使用 true 作为追加,文件不会被覆盖see the javadoc of FileWriter

    对您来说更好的解决方案可能是使用 one FileWriter。

    【讨论】:

      【解决方案3】:

      使用

       bw = new BufferedWriter(new 
      FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name", true));
      

      调用这个构造函数 测试

      FileWriter(String fileName, boolean append)
      Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 2017-05-29
        • 1970-01-01
        相关资源
        最近更新 更多