确保关闭在方法调用中打开的流的最佳方法
Best way to ensure streams that are opened inside a method call get closed
我正在调用一种方法将一些数据写入 java 中的 CSV 文件。在该方法中,我使用的是抛出 IOException 的 FileWriter。我想知道处理这个异常的正确方法是什么,如果我想在外部方法中处理它,同时还要确保 FileWriter 被关闭。
我正在考虑两种解决方案:
只处理打开FileWriter的方法内部的异常。
想办法将 FileWriter 传回调用方法,以便它可以关闭。
这是我所说的一个例子:
public static void outerFunc() {
// get some sort of data
try {
innerFunc(data);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
// can I close the FileWriter here somehow?
}
}
private static void innerFunc(Data data) throws IOException {
FileWriter csv = new FileWriter("result.csv")
// Write the data to the file
csv.flush();
csv.close();
}
让我知道你们的想法。我很乐意接受这样一个事实,即我可能完全偏离了基地,应该以不同的方式来做这件事。预先感谢您的任何输入!
打开资源的方法应该关闭它,我会使用the try-with-resources
Statement。喜欢,
try (FileWriter csv = new FileWriter("result.csv")) {
// ...
}
我正在调用一种方法将一些数据写入 java 中的 CSV 文件。在该方法中,我使用的是抛出 IOException 的 FileWriter。我想知道处理这个异常的正确方法是什么,如果我想在外部方法中处理它,同时还要确保 FileWriter 被关闭。
我正在考虑两种解决方案:
只处理打开FileWriter的方法内部的异常。
想办法将 FileWriter 传回调用方法,以便它可以关闭。
这是我所说的一个例子:
public static void outerFunc() {
// get some sort of data
try {
innerFunc(data);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
// can I close the FileWriter here somehow?
}
}
private static void innerFunc(Data data) throws IOException {
FileWriter csv = new FileWriter("result.csv")
// Write the data to the file
csv.flush();
csv.close();
}
让我知道你们的想法。我很乐意接受这样一个事实,即我可能完全偏离了基地,应该以不同的方式来做这件事。预先感谢您的任何输入!
打开资源的方法应该关闭它,我会使用the try-with-resources
Statement。喜欢,
try (FileWriter csv = new FileWriter("result.csv")) {
// ...
}