2016-05-03 2 views
0

I обычно открытые файлы, запрашивая в BufferedReader:Является ли файл открыт с newBufferedReader закрытым, если происходит Исключение?

Files.newBufferedReader(myPath).lines() 
    .doStuff() 
    .doMoreStuff(); 

Что происходит, когда метод генерирует исключение, будет Ридер будет автоматически закрыт, как с примерки с-ресурса? Я не нашел ссылки в документах.

+1

Нет, я так не думаю. Вот почему его предложили использовать try-with-resource или atleast try-cacth-finally. – Prashant

+0

Я просто не вижу преимущества использования фабричного метода вместо простого создания нового BufferedReader. Я подумал, что это было бы более кратким, но необходимость обертывать его обработкой исключений делает его ничем не отличающимся от стандартной инициализации. – AdHominem

ответ

2

Files.newBufferedReader - всего лишь утилита/фабричный метод для создания файла BufferedReader для файла. Внутри он в конце концов создает new BufferedReader() для создания BufferedReader.

Итак, вам нужно будет обработать его так же, как вы бы создали BufferedReader с помощью оператора new. Если вы хотите, чтобы он был автоматически закрыт в конце блока try, вам нужно было бы использовать try-with-resource, как вам было бы, если бы вам пришлось его создать с помощью оператора new.

+0

Хм, я вижу, но try-with-resource выглядел бы очень уродливым в этом случае, я думаю, поскольку это поток, и мне пришлось бы включить весь поток внутри try-with-clause? – AdHominem

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