我有一个BufferedWriter,它已经写入文件,但不是以我想要的方式写入文件。我在一个循环中初始化它,导致它只追加循环的最后一个结果以被添加到文件中。实际上,这对我来说是可以的,但是文件中先前的结果会被删除。我希望在不删除之前的结果的情况下添加结果。
为了不总是在循环中创建缓冲阅读器的新实例,我尝试创建静态缓冲阅读器。但这是不可能的,因为你需要一个“尝试”块。
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++;
}
};发布于 2019-05-21 10:46:26
FileWriter有一个构造函数public FileWriter(String fileName, boolean append) throws IOException。如果您使用true作为附加,文件将不会被覆盖参见FileWriter的javadoc
对您来说,更好的解决方案可能是使用one FileWriter。
发布于 2019-05-21 10:44:15
我认为您是在询问如何附加到文件中,即使您正在创建新的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
}发布于 2019-05-21 10:43:24
使用
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.https://stackoverflow.com/questions/56236458
复制相似问题