确保关闭在方法调用中打开的流的最佳方法

Best way to ensure streams that are opened inside a method call get closed

我正在调用一种方法将一些数据写入 java 中的 CSV 文件。在该方法中,我使用的是抛出 IOException 的 FileWriter。我想知道处理这个异常的正确方法是什么,如果我想在外部方法中处理它,同时还要确保 FileWriter 被关闭。

我正在考虑两种解决方案:

  1. 只处理打开FileWriter的方法内部的异常。

  2. 想办法将 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")) {
    // ...
}