关闭 Java 输入/输出流



这是我的代码:

FileOutputStream fos = null;
DataOutputStream dos = null;
try {
    fos = new FileOutputStream(file);
    dos = new DataOutputStream(fos);
    .... writing to file ....
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (dos != null) {
        try {
            dos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    if (fos != null) {
        try {
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我读到您只需要关闭DataOutpustStream,它将关闭所有其他流,这是正确的吗?如果我无论如何关闭FileOutputStream会有什么伤害吗?关闭流的最佳方法是什么?

不,它不会造成任何伤害

您需要按照打开它们的相同顺序关闭它们 - 将它们视为彼此环绕的包装器。如果创建一个FileOutputStream,然后将其包装在DataOutputStream中,则应先关闭DataOutputStream

但是你应该使用try-with-resources

try (
        final FileOutputStream fos = new FileOutputStream(file);
        final DataOutputStream dos = new DataOutputStream(fos);
) {
    ....writing to file....
} catch (IOException e) {
    e.printStackTrace();
}

如果以相同的方式处理这两个异常,则只能捕获更一般的IOException

关闭流的最佳方法是使用 try-resource-blocks 时。在大多数情况以级联方式关闭。对于答案,您必须仔细研究 API。

相关内容

  • 没有找到相关文章

最新更新