虽然java.io.RandomAccessFile
确实有close()
方法,java.io.File
却没有。这是为什么?文件是在完成时自动关闭还是什么?
谢谢!
答案 0 :(得分:127)
File
类的javadoc将类描述为:
文件和目录路径名的抽象表示。
File
只是路径名的表示,有一些关于文件系统的方法(如exists()
)和目录处理,但实际的流输入和输出是在其他地方完成的。流可以打开和关闭,文件不能。
(我个人的观点是,Sun继续创建RandomAccessFile
是非常不幸的,因此对其不一致的命名造成了很大的混淆。)
答案 1 :(得分:62)
java.io.File
不代表 open 文件,它代表文件系统中的路径。因此,使用close
方法没有意义。
实际上,这个类被图书馆作者误称,它应该被称为Path
。
答案 2 :(得分:6)
基本上随机访问文件包装输入和输出流以管理随机访问。您不打开和关闭文件,打开和关闭文件流。
答案 3 :(得分:4)
可以打开和关闭BufferedReader,但永远不会打开文件,它只代表文件系统中的路径。
答案 4 :(得分:2)
假设,你有
File f = new File("SomeFile");
f.length();
您无需关闭File
,因为它只是路径的表示。
你应该始终考虑只关闭读者/作者和事实上的流。