2013-12-07 1 views
18

Commons-IO имеет IOUtils.toString(inputStream) метод, который может прочитать все содержимое из входного потока:Должен ли я вручную закрыть входной поток после использования IOUtils.toString (ввода) commons-io?

InputStream input = getInputStream(); 
String content = IOUtils.toString(input); 

Мой вопрос я должен закрыть входной поток вручную после его использования?

Я думал, что IOUtils может закрыть его, так как он прочитал весь контент, но я не могу найти его в исходном коде.

+0

Если вы не можете найти это в исходном коде, разве это не сильный признак того, что его нет? –

+0

Для файлов используйте FileUtils.readFileToString(), он использует IOUtils, но также закрывает поток. –

ответ

23

The javadoc говорит:

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

+0

Это обычный шаблон для потоковых библиотек. Клиент должен справиться с этим. –

+1

Спасибо, но я обнаружил, что мне никогда не нужно делать другие операции над входным потоком, когда я читаю содержимое с помощью 'IOUtils.toString', за исключением его закрытия ... – Freewind

+2

для файлов вы можете использовать FileUtils.readFileToString(), который закрывает поток –

Смежные вопросы