循环写入文件不起作用
Writing to a file in loop doesn't work
我想打开一个文件,循环写入(将所有内容附加到前面的行),然后关闭它。我已经在循环内用一个方法实现了所有内容,但我遇到了类似于 this question 的问题。所以,我尝试按照写和打开必须分步进行的建议来实现。我现在的代码如下所示:
PrintWriter out= createAndOpenFile(fileName);
for (int i = 0 ; i< test.size(); i++){
writeToFile(mystring, out);
}
out.close();
以上方法的实现如下:
private PrintWriter createAndOpenFile(String fileName) {
try (FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
return out;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private void writeToFile(String features, PrintWriter out) {
out.println(features);
out.flush();
}
谁能告诉我我的代码有什么问题?
更新:“不工作”是指文件虽然已创建,但最后还是空的。
正如@khelwood 所说,out
在 return 语句处关闭。这是预期的。
如果您在 try
中执行 writeToFile
,它会起作用(文件不会为空):
try (FileWriter fw = new FileWriter("c:/temp/tt.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
writeToFile(mystring, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
我想打开一个文件,循环写入(将所有内容附加到前面的行),然后关闭它。我已经在循环内用一个方法实现了所有内容,但我遇到了类似于 this question 的问题。所以,我尝试按照写和打开必须分步进行的建议来实现。我现在的代码如下所示:
PrintWriter out= createAndOpenFile(fileName);
for (int i = 0 ; i< test.size(); i++){
writeToFile(mystring, out);
}
out.close();
以上方法的实现如下:
private PrintWriter createAndOpenFile(String fileName) {
try (FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
return out;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private void writeToFile(String features, PrintWriter out) {
out.println(features);
out.flush();
}
谁能告诉我我的代码有什么问题?
更新:“不工作”是指文件虽然已创建,但最后还是空的。
正如@khelwood 所说,out
在 return 语句处关闭。这是预期的。
如果您在 try
中执行 writeToFile
,它会起作用(文件不会为空):
try (FileWriter fw = new FileWriter("c:/temp/tt.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
writeToFile(mystring, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
}