Почему у java.io.File нет метода close()?

В то время как java.io.RandomAccessFile имеет метод close() java.io.File, это не так. Почему это? Является ли файл закрытым автоматически при завершении или что-то еще?

Спасибо!

Ответ 1

javadoc класса File описывает класс как:

Абстрактное представление имен файлов и каталогов.

File - это только представление пути с несколькими методами, относящимися к файловой системе (например, exists()) и обработкой каталогов, но фактический потоковый ввод и вывод выполняется в другом месте. Потоки можно открывать и закрывать, файлы не могут.

(Мое личное мнение состоит в том, что довольно неудачно, что Sun затем продолжил создание RandomAccessFile, вызывая много путаницы с его непоследовательным наименованием.)

Ответ 2

java.io.File не представляет собой открытый файл, он представляет собой путь в файловой системе. Поэтому использование метода close на нем не имеет смысла.

Собственно, этот класс был неправильно назван авторами библиотеки, его следует называть чем-то вроде Path.

Ответ 3

По сути, файл произвольного доступа обертывает входные и выходные потоки для управления произвольным доступом. Вы не открываете и не закрываете файл, вы открываете и закрываете потоки в файл.

Ответ 4

BufferedReader можно открыть и закрыть, но файл никогда не открывается, он просто представляет путь в файловой системе.

Ответ 5

Предположим, что у вас есть файл f = новый файл ( "SomeFile" ); f.length(); Вам не нужно закрывать файлы, потому что его jsut представляет путь. Вы должны всегда рассматривать закрытие только чтения/писателей и потоки информации.