Что происходит, когда я открываю FileReader/FileWriter?

у меня есть сомнение cúal обрабатывает информацию básicamene на классах FileWriter и FileReader. Когда я instancio понял эти классы, что открывается связь между избранным файлом и программой java, сейчас, потому что я должен закрывать эту связь? Что происходит внутри?

Как он работает BufferedReader в отличие от FileReader и FileWriter?

2
задан 21.02.2016, 05:10
3 ответа

Когда ты будешь верить в связь между файлом и программой, ты производишь Stream, эти Stream действуют как канал между программой и файлом, на этот канал послана информация в байт, потребованный. Тогда, если ты не закрываешь, возможно, что ты продолжаешь использовать ресурсы твоей машины, которые были использованы для этого stream, я схватил cerar close (), ты освобождаешь ресурсы, использованные для шага информации между каналом.

FileReader и FileWriter это классы, которые обычно используют, чтобы читать и писать текстовые файлы, использовав 16 бит для разгрузки символов BufferedReader смоги улучшать результат используя буфер для чтения этих символов.

С версии 7 из java уже не используется close () в Вашем месте ты можешь захватывать исключение автоматически с:

try{} и cath(){}

1
ответ дан 24.11.2019, 14:51
  • 1
    Во всех версиях Java используют close. Случается, что в Java 7 существует try-with-resources, где тот же блок try может закрывать ресурсы, которые осуществляют интерфейс Closeable из-за тебя, detr и # 225; s сцен м и # 233; совсем close продолжает звонить. Благосклонность издавать эту часть, чтобы не запутывать лекторат. –  21.02.2016, 05:39

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
*/
4
ответ дан 24.11.2019, 14:51

Чтобы соглашаться на файл операционная система должна снабжать описывающие файлов, которые, до определенной степени, недостаточные. То, что происходит, когда program открывает много файлов и не закрывает их, состоит в том, что он истощает описывающие, которые система поставляет его в Ваш процесс.

В крохотных программах, которые открывают мало файлов, возможно не замечать это, но в более сложных программах или программах, которые прокручивают изображение в окне в течение большого количества времени (e.g., серверы), что происходит в каком-то моменте, состоит в том, что они иссякают, и программа остается, не могут открывать новые файлы.

Как он работает BufferedReader в отличие от FileReader и FileWriter?

BufferedReader он - декоратор, который добавляет функциональность к одному Reader основания. Цель состоит в том, что самый экономический способ читать файла - в блоках, но много программ предпочитают читать один байт или характер одновременно. BufferedReader реши это читая блок одновременно Reader основания, сохраняя их temporeramente, и подавая их понемногу в Вашего потребителя.

2
ответ дан 24.11.2019, 14:51