Я должен закрыть () и FileReader и BufferedReader?

XMLSpy делает это для Вас, хотя это не свободно...

я полагаю, что Жидкий Xml Studio делает это для Вас и свободен, но я лично не использовал его для создания данных тестирования.

179
задан Alberto Zaccagni 11 July 2011 в 13:35
поделиться

4 ответа

BufferedReader.close()

закрывает поток согласно javadoc для BufferedReader и InputStreamReader

, а также

FileReader.close()

делает.

]
199
ответ дан 23 November 2019 в 20:12
поделиться

Исходный код для BufferedReader показывает, что базовый объект закрывается, когда вы закрываете BufferedReader.

5
ответ дан 23 November 2019 в 20:12
поделиться

Согласно источнику BufferedReader, в этом случае bReader.close вызывает fReader.close, так что технически вам не нужно вызывать последний.

5
ответ дан 23 November 2019 в 20:12
поделиться

Как указывали другие , вам нужно только закрыть внешнюю оболочку.

BufferedReader reader = new BufferedReader(new FileReader(fileName));

Существует очень малая вероятность утечки дескриптора файла, если конструктор BufferedReader выдал исключение (например, OutOfMemoryError ). Если ваше приложение находится в этом состоянии, то, насколько тщательной должна быть очистка, может зависеть, насколько важно не лишать ОС ресурсов, которые она может захотеть выделить для других программ.

Closeable интерфейс может использоваться, если конструктор оболочки может дать сбой в Java 5 или 6:

Reader reader = new FileReader(fileName);
Closeable resource = reader;
try {
  BufferedReader buffered = new BufferedReader(reader);
  resource = buffered;
  // TODO: input
} finally {
  resource.close();
}

Код Java 7 должен использовать шаблон try-with-resources :

try (Reader reader = new FileReader(fileName);
    BufferedReader buffered = new BufferedReader(reader)) {
  // TODO: input
}
95
ответ дан 23 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: