В то время как 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 представляет путь. Вы должны всегда рассматривать закрытие только чтения/писателей и потоки информации.