gpt4 book ai didi

java - 我需要在每个新输入流上调用 close() 吗?

转载 作者:行者123 更新时间:2023-11-29 06:26:43 26 4
gpt4 key购买 nike

这是代码。

public static void main(String[] args) throws IOException {

FileInputStream fis = null;

fis = new FileInputStream(new File("D:\\za180s.ser"));
// do something
fis = new FileInputStream(new File("D:\\za185s.ser"));
// do something
fis = new FileInputStream(new File("D:\\za186s.ser"));
// do something
fis = new FileInputStream(new File("D:\\za187s.ser"));
// do something
fis.close();

}

问题是:我需要在每次“做某事”后调用 fis.close() 方法,还是我只调用 fis.close() 一次。

忽略finally中的close()位置和代码是否需要try catch。

谢谢大家。

最佳答案

是的,您需要关闭每个单独的 InputStream。您的代码存在的问题是每次创建新流时都会重新分配变量 fis 。换句话说:fis 不再指向旧的 InputStream,因此调用 close 不会关闭之前的流。

更多信息,查看https://stackoverflow.com/a/40523/8819761

您还可以使用 Java 7 的 try-with-resources 语法,它会在您退出 try block 后自动关闭流:

try (InputStream fis = new FileInputSteam(yourFile)) {
// Do something
}

try (InputStream fis = new FileInputSteam(yourFile)) {
// Do something else
}

关于java - 我需要在每个新输入流上调用 close() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55098450/

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