gpt4 book ai didi

java - 如果 IOException 关闭流的 DataInputStream

转载 作者:行者123 更新时间:2023-11-29 07:10:28 24 4
gpt4 key购买 nike

在所有示例中,每个人都可以找到这样的代码:

DataInputStream inputStream = null;
try {
inputStream = new DataInputStream( new FileInputStream("file.data"));
int i = inputStream.readInt();
inputStream.close();
} catch (FileNotFoundException e) {
//print message File not found
} catch (IOException e) { e.printStackTrace() }

当这段代码遇到FileNotFound异常时,inputStream没有打开,所以不需要关闭。

但是为什么当 IOException 在那个 catch block 中遇到时我没有看到 inputStream.close()。当输入数据异常抛出时,这个操作会自动执行吗?因为如果程序有输入问题,这意味着流已经打开。

最佳答案

不,关闭操作不会自动调用。为此,请使用 Java 7 中引入的 try-with-resources:

try (DataInputStream inputStream = new DataInputStream( new FileInputStream("file.data"))) {
int i = inputStream.readInt();
} catch (Exception e) { e.printStackTrace() }

UPD: 说明:DataInputStream实现了AutoCloseable接口(interface)。也就是说,在构造try-with-resources时,Java会自动调用隐藏在finally block 中的inputStreamclose()方法。

关于java - 如果 IOException 关闭流的 DataInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com