为什么java.io.File没有close()方法?
虽然java.io.RandomAccessFile
确实有一个close()
方法java.io.File
没有。 这是为什么? 文件是否在最终确定时自动closures?
谢谢!
File
类的javadoc将类描述为:
文件和目录path名的抽象表示。
File
只是一个path名的表示,有几个关于文件系统(如exists()
)和目录处理的方法,但实际的streaminput和输出是在别处完成的。 stream可以打开和closures,文件不能。
(我个人的观点是,Sun很不幸地创build了RandomAccessFile
,导致了与其不一致的命名混淆。)
java.io.File
不表示一个打开的文件,它表示文件系统中的一个path。 所以采取close
方法是没有意义的。
实际上,这个类是由图书馆作者错误命名的,应该叫做Path
。
本质上随机访问文件包装input和输出stream,以pipe理随机访问。 您不打开和closures文件,打开和closures文件stream。
一个BufferedReader可以打开和closures,但File永远不会打开,它只是表示文件系统中的一个path。
假设你有File f = new File(“SomeFile”); f.length(); 你不需要closures文件,因为它只是path的表示。 你应该总是考虑只closures读者/作者和事实上的stream。