我想打开一个文件,在循环中写入它(将所有内容附加到前面的行),然后关闭它。我已经在循环内的单个方法中实现了所有内容,并且我遇到了与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();
}
有谁能告诉我我的代码有什么问题?
更新:“不工作”我的意思是文件最后是空的,虽然是创建的。
答案 0 :(得分:1)
正如@khelwood所说,out
在return语句中被关闭。这是预期的。
如果你在writeToFile
内执行try
,它就可以了(文件不会为空):
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();
}