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

Alb*_*ore 113 java file-io

虽然java.io.RandomAccessFile确实有一种close()方法java.io.File没有.这是为什么?文件是否在最终确定时自动关闭?

谢谢!

biz*_*lop 134

File该类的javadoc将该类描述为:

文件和目录路径名的抽象表示.

File只是路径名的表示,有一些关于文件系统(如exists())和目录处理的方法,但实际的流输入和输出是在其他地方完成的.流可以打开和关闭,文件不能.

(我个人的观点是,Sun继续创建它是相当不幸的RandomAccessFile,导致其不一致的命名引起很多混淆.)


axt*_*avt 66

java.io.File不表示打开的文件,它表示文件系统中的路径.因此,close对它采用方法没有意义.

实际上,这个类被图书馆作者误称,它应该被称为类似的Path.

  • "实际上,这个类被图书馆作者误称为"它应该被称为Path" - >他们听到了你的声音.在nio(New I/O)包中,类似的classe现在名为Path.http://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html (6认同)
  • 同意,但无论如何,File或RandomAccessFile被错误地命名.像RandomAccessFileStream这样的东西可能会更好,但现在已经太晚了. (3认同)

Spe*_*eck 6

基本上随机的访问文件包装输入和输出流,以便管理随机访问.您不打开和关闭文件,打开和关闭文件的流.


Sah*_*wal 5

可以打开和关闭BufferedReader,但从不打开File,它仅表示文件系统中的路径。


Bal*_*yan 5

假设你有

File f  = new File("SomeFile");
f.length();
Run Code Online (Sandbox Code Playgroud)

您不需要关闭Files,因为它只是路径的表示。

您应该始终考虑仅关闭读取器/写入器以及实际上的流。