BufferedWriter 防止覆盖
BufferedWriter prevent overwriting
我有一个 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++;
}
};
使用
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.
我想你问的是如何追加到一个文件,即使你正在创建新的 BufferedWriters。
使用文件写入器,第二个参数为真,像这样:
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
FileWriter 有一个构造函数 public FileWriter(String fileName, boolean append) throws IOException
。
如果您使用 true 作为追加,文件将不会被覆盖 see the javadoc of FileWriter
更好的解决方案可能是使用 one FileWriter。
我有一个 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++;
}
};
使用
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.
我想你问的是如何追加到一个文件,即使你正在创建新的 BufferedWriters。
使用文件写入器,第二个参数为真,像这样:
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
FileWriter 有一个构造函数 public FileWriter(String fileName, boolean append) throws IOException
。
如果您使用 true 作为追加,文件将不会被覆盖 see the javadoc of FileWriter
更好的解决方案可能是使用 one FileWriter。