为什么java.io.File没有close()方法?

时间:2011-01-20 20:33:46

标签: java file-io

虽然java.io.RandomAccessFile确实有close()方法,java.io.File却没有。这是为什么?文件是在完成时自动关闭还是什么?

谢谢!

5 个答案:

答案 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,因为它只是路径的表示。

你应该始终考虑只关闭读者/作者和事实上的流。