В то время как java.io.RandomAccessFile имеет метод close() java.io.File, это не так. Почему это? Является ли файл закрытым автоматически при завершении или что-то еще?
Спасибо!
В то время как java.io.RandomAccessFile имеет метод close() java.io.File, это не так. Почему это? Является ли файл закрытым автоматически при завершении или что-то еще?
Спасибо!
javadoc класса File описывает класс как:
Абстрактное представление имен файлов и каталогов.
File - это только представление пути с несколькими методами, относящимися к файловой системе (например, exists()) и обработкой каталогов, но фактический потоковый ввод и вывод выполняется в другом месте. Потоки можно открывать и закрывать, файлы не могут.
(Мое личное мнение состоит в том, что довольно неудачно, что Sun затем продолжил создание RandomAccessFile, вызывая много путаницы с его непоследовательным наименованием.)
java.io.File не представляет собой открытый файл, он представляет собой путь в файловой системе. Поэтому использование метода close на нем не имеет смысла.
Собственно, этот класс был неправильно назван авторами библиотеки, его следует называть чем-то вроде Path.
По сути, файл произвольного доступа обертывает входные и выходные потоки для управления произвольным доступом. Вы не открываете и не закрываете файл, вы открываете и закрываете потоки в файл.
BufferedReader можно открыть и закрыть, но файл никогда не открывается, он просто представляет путь в файловой системе.
Предположим, что у вас есть файл f = новый файл ( "SomeFile" ); f.length(); Вам не нужно закрывать файлы, потому что его jsut представляет путь. Вы должны всегда рассматривать закрытие только чтения/писателей и потоки информации.