у меня есть сомнение cúal обрабатывает информацию básicamene на классах FileWriter
и FileReader
. Когда я instancio понял эти классы, что открывается связь между избранным файлом и программой java, сейчас, потому что я должен закрывать эту связь? Что происходит внутри?
Как он работает BufferedReader
в отличие от FileReader
и FileWriter
?
Когда ты будешь верить в связь между файлом и программой, ты производишь Stream, эти Stream действуют как канал между программой и файлом, на этот канал послана информация в байт, потребованный. Тогда, если ты не закрываешь, возможно, что ты продолжаешь использовать ресурсы твоей машины, которые были использованы для этого stream, я схватил cerar close (), ты освобождаешь ресурсы, использованные для шага информации между каналом.
FileReader
и FileWriter
это классы, которые обычно используют, чтобы читать и писать текстовые файлы, использовав 16 бит для разгрузки символов BufferedReader
смоги улучшать результат используя буфер для чтения этих символов.
С версии 7 из java уже не используется close () в Вашем месте ты можешь захватывать исключение автоматически с:
try{}
и cath(){}
BufferedReader
и FileReader
это классы, которые они увеличивают класса Reader
и они служат для того, чтобы помочь главный файл рисунка декоратор. Этот главный файл характеризуется тем, что добавляет функциональность динамического способа во время выполнения. То, что у тебя есть с классом java.io.Reader
это контракт, который устанавливает, как читать символы разгрузки данных (stream). Класс FileReader
будешь читать символы файла (любой, который был Вашим форматом). Класс BufferedReader
украси один java.io.Reader
чтобы облегчать чтение символов, которое существует в этом читателе, предпотратив Ваш контент, и который быть должен хранить это в буфере, так что он упрощает чтение символов в разгрузке данных.
Чтобы читать символы файла, достаточно делать это:
FileReader reader = new FileReader("/ruta/del/archivo.ext");
Но FileReader
он не имеет по отношению к тем никакого добавочного метода Reader
, из-за чего прямое чтение этого класса было бы характера из-за характера или набора символов, хранившегося в договоренности (обозначенный методом FileReader#read(char[], int, int)
.
Чтобы упрощать результат приложения в этих случаях, что обычно делают, состоит в том, чтобы украшать инстанцию FileReader
с инстанцией BufferedReader
, таким образом:
BufferedReader reader = new BufferedReader(new FileReader("/ruta/del/archivo.ext"));
Сейчас, каждый раз, когда он занимается с физическим файлом, открывается связь для вышеупомянутого файла и говорят, что приложение использует файл. Не закрыв эту связь путь Closeable#close
операционная система пометит, что приложение продолжает использовать файл, производя так проблему. Всегда должны закрываться ресурсы.
Как упомяни @juliansalas, с Java 7 ты можешь уберегаться призыв к методу close
использовав try-with-resources
. Здесь пример:
try (BufferedReader reader = new BufferedReader(new FileReader("/ruta/del/archivo.ext"))) {
//consume los datos del reader
//...
} catch (IOException e) {
//maneja tus excepciones, SIEMPRE
} /*
no es necesario agregar un bloque finally para cerrar los recursos
puesto que esta forma de utilizar try ya cerrará los recursos
por ti y manejará el caso en que la variable `reader` no haya
sido inicializada
*/
Чтобы соглашаться на файл операционная система должна снабжать описывающие файлов, которые, до определенной степени, недостаточные. То, что происходит, когда program открывает много файлов и не закрывает их, состоит в том, что он истощает описывающие, которые система поставляет его в Ваш процесс.
В крохотных программах, которые открывают мало файлов, возможно не замечать это, но в более сложных программах или программах, которые прокручивают изображение в окне в течение большого количества времени (e.g., серверы), что происходит в каком-то моменте, состоит в том, что они иссякают, и программа остается, не могут открывать новые файлы.
Как он работает
BufferedReader
в отличие отFileReader
иFileWriter
?
BufferedReader
он - декоратор, который добавляет функциональность к одному Reader
основания. Цель состоит в том, что самый экономический способ читать файла - в блоках, но много программ предпочитают читать один байт или характер одновременно. BufferedReader
реши это читая блок одновременно Reader
основания, сохраняя их temporeramente, и подавая их понемногу в Вашего потребителя.
close
. Случается, что в Java 7 существуетtry-with-resources
, где тот же блокtry
может закрывать ресурсы, которые осуществляют интерфейсCloseable
из-за тебя, detr и # 225; s сцен м и # 233; совсемclose
продолжает звонить. Благосклонность издавать эту часть, чтобы не запутывать лекторат. – 21.02.2016, 05:39