gpt4 book ai didi

java - 这个 Java 片段会关闭文件吗?

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

我在这里找到了一些编码: Java: Printing from a file

Scanner fRead = new Scanner(new File(targetFileName));
while (fRead.hasNextLine())
System.out.println(fRead.nextLine());

我的问题:

  • 从“file.txt”创建 File 对象是否会打开该文件?
  • 如果是这样(我相对确定会这样),该代码片段不会使所述文件保持打开状态吗?
  • 程序终止后,如果所述文件保持打开状态,会发生什么情况?

最佳答案

当垃圾收集器完成其工作时,文件最终将被关闭,但您不确定这何时会发生。在这种情况下,最好的办法是在 try-catch-finally 结构中与扫描器交互,并在 finally block 中将其关闭。

try {
scanner = new Scanner(file);
// read contents
} catch (Exception ex) {
// handle problems
} finally {
// close the scanner
scan.close();
}

正如评论中所建议的,从 java 7 开始,可以通过使用新引入的 try-with-resources 结构来简化代码,如下所示:

try (Scanner scanner = new Scanner(file)) {
//read file contents
} catch (Exception e) {
// handle exceptions
}

在这种情况下,您不需要显式关闭扫描仪,因为 java 会自动执行此操作。

关于java - 这个 Java 片段会关闭文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51251779/

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