Если вы заглянете в Java API, то сразу получите ответ.
gigadot
43
Я узнал, что люди более полезны, чем в остальном превосходная спецификация Java.
Альбус Дамблдор
6
б / ц не открывается :)
bestsss
6
Потому что ничего не открывает. И люди значительно менее надежны, чем официальная спецификация Java.
Marquis of Lorne
Ответы:
141
Javadoc Fileкласса описывает класс как:
Абстрактное представление путей к файлам и каталогам.
Fileпредставляет собой только представление имени пути с несколькими методами, касающимися файловой системы (например, exists()) и обработки каталогов, но фактический потоковый ввод и вывод выполняется в другом месте. Потоки можно открывать и закрывать, файлы - нет.
(Мое личное мнение состоит в том, что весьма прискорбно, что Sun тогда продолжила творить RandomAccessFile, вызвав много путаницы из-за непоследовательного наименования.)
Но как насчет всех методов листинга каталогов? Их надо было полностью отделить от всего Path.
biziclop
3
Согласен, но в любом случае либо File, либо RandomAccessFile названы неправильно. Что-то вроде RandomAccessFileStream могло бы быть лучше, но уже слишком поздно.
maaartinus
7
«На самом деле, этот класс был неправильно назван авторами библиотеки, он должен называться как-то вроде Path» -> Они вас услышали. В пакете nio (New I / O) аналогичный класс теперь называется Path. docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html
минут
6
По сути, файл с произвольным доступом обертывает потоки ввода и вывода для управления произвольным доступом. Вы не открываете и не закрываете файл, вы открываете и закрываете потоки файла.
Да. Я никогда особо не заглядывал в java.io.RandomAccessFile. Я всегда предполагал, что он переопределяет java.io.File, но это не так! Файл представляет собой путь. RandomAccessFile - это объект, который может выполнять дисковый ввод-вывод, как потоки, хотя и с другой реализацией, чтобы разрешить случайный, а не потоковый доступ.
Стив Коэн,
6
BufferedReader можно открывать и закрывать, но файл никогда не открывается, он просто представляет собой путь в файловой системе.
Ответы:
Javadoc
File
класса описывает класс как:File
представляет собой только представление имени пути с несколькими методами, касающимися файловой системы (например,exists()
) и обработки каталогов, но фактический потоковый ввод и вывод выполняется в другом месте. Потоки можно открывать и закрывать, файлы - нет.(Мое личное мнение состоит в том, что весьма прискорбно, что Sun тогда продолжила творить
RandomAccessFile
, вызвав много путаницы из-за непоследовательного наименования.)источник
java.io.File
не представляет собой открытый файл, он представляет собой путь в файловой системе. Поэтому использоватьclose
метод не имеет смысла.Собственно, этот класс был неправильно назван авторами библиотеки, называть его надо как-то так
Path
.источник
Path
.По сути, файл с произвольным доступом обертывает потоки ввода и вывода для управления произвольным доступом. Вы не открываете и не закрываете файл, вы открываете и закрываете потоки файла.
источник
BufferedReader можно открывать и закрывать, но файл никогда не открывается, он просто представляет собой путь в файловой системе.
источник
Скажем, предположим, у вас есть
Вам не нужно закрывать
File
s, потому что это просто представление пути.Вы всегда должны думать о закрытии только читателей / писателей и фактически потоков.
источник