java - 确保在方法调用中打开的流关闭的最佳方法
问题描述
我正在调用一种方法来将一些数据写入 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();
}
让我知道你们的想法。我非常愿意接受这样一个事实,即我可能完全不在这儿,应该以不同的方式来做这件事。提前感谢您的任何意见!
解决方案
打开资源的方法应该关闭它,我会使用try-with-resources
Statement。喜欢,
try (FileWriter csv = new FileWriter("result.csv")) {
// ...
}
推荐阅读
- fortran - Fortran 与 Apple 硅 m1
- python - 所以我正在制作这个文件加密器和解密器,现在我正在尝试使用 Tkinter GUI 使它成为一个应用程序。得到这个错误
- flutter - 在小部件而不是屏幕之间颤动英雄动画
- windows - 如何在 powershell 中为 get-netroute 创建一个变量以输入当前环境设置
- google-cloud-platform - 尝试运行一个 gcloud 命令,该命令将列出 VM 实例并显示它们自创建日期以来的天数
- file - 电话机。以消息形式接收文件
- node.js - 在 chrome 开发工具中选择元素之前,Puppeteer 无法使用 xPath contains(text()) 找到元素
- c# - 手动触发并等待 Quartz.Net 作业
- python - 如何在 QStackedWidget 中刷新/重新初始化小部件
- python - 链接在下载弹出窗口中打开,但复制和粘贴时不起作用