BufferedWriter防止覆盖

时间:2019-05-21 10:37:36

标签: java actionlistener bufferedwriter

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

我试图创建静态的Buffered Reader,以便不总是在循环中创建Buffered Reader的新实例。 但这是不可能的,因为您需要一个“ 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++;
        }
    };

3 个答案:

答案 0 :(得分:1)

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

使用第二个参数为true的文件编写器,如下所示:

var detectionFrame: ARFrame?

// Timer block
detectionFrame = sceneView.session.currentFrame
let pixelBuffer = detectionFrame.capturedImage
// image detection request code


func detectTextHandler(request: VNRequest, error: Error?) {
    guard let frame = detectionFrame else { return }
    ...
    let hit = frame.hitTest(box?.topRight - box?.bottomLeft, types: ARHitTestResult.ResultType.featurePoint ) 
    ...
}

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

答案 1 :(得分:0)

使用

 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.

答案 2 :(得分:0)

FileWriter具有构造函数public FileWriter(String fileName, boolean append) throws IOException。 如果您使用true作为附加内容,则文件不会被覆盖see the javadoc of FileWriter

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