这个Java代码段是否关闭了文件?
我在这里发现了一些编码: 我的问题是:这个Java代码段是否关闭了文件?,java,file,Java,File,我在这里发现了一些编码: 我的问题是: 从“File.txt”创建文件对象会打开所述文件吗 如果是这样的话(我相对肯定会这样),代码片段会不会让文件保持打开状态 当程序终止后所述文件保持打开状态时会发生什么 当垃圾收集器完成其工作时,文件最终将被关闭,但您不确定这将在何时发生。在这种情况下,最好的做法是在try-catch-finally构造中与扫描器交互,并在finally块中关闭扫描器 try { scanner = new Scanner(file); // read
- 从“File.txt”创建文件对象会打开所述文件吗
- 如果是这样的话(我相对肯定会这样),代码片段会不会让文件保持打开状态
- 当程序终止后所述文件保持打开状态时会发生什么
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会自动关闭扫描仪 也许您还想提到try with resource语句作为
Scanner
implementsCloseable
。感谢您的建议,它被添加了。从快速阅读try with resources判断,您应该执行以下操作:try(Scanner=new Scanner(new File(filename)){while(Scanner.hasnetline()){System.out.println()(scanner.nextLine())}
try (Scanner scanner = new Scanner(file)) {
//read file contents
} catch (Exception e) {
// handle exceptions
}