首页 > 解决方案 > 确保在方法调用中打开的流关闭的最佳方法

问题描述

我正在调用一种方法来将一些数据写入 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();
}

让我知道你们的想法。我非常愿意接受这样一个事实,即我可能完全不在这儿,应该以不同的方式来做这件事。提前感谢您的任何意见!

标签: javaexceptionioexceptionfilewriter

解决方案


打开资源的方法应该关闭它,我会使用try-with-resourcesStatement。喜欢,

try (FileWriter csv = new FileWriter("result.csv")) {
    // ...
}

推荐阅读