Всех приветствую!
Разъясните пожалуйста, почему во всех предыдущих задачах в скобках "try" ставились классы, которые идут потоком и требуют закрытия, а в этой задаче, то что по идее должно быть потоком вынесено и идет в блоке "try", а не в скобках?
Пример:
1) В задачах ДО:
try (Scanner scanner = new Scanner(System.in);
var inputStream = Files.newInputStream(Paths.get(scanner.nextLine()));
var outputStream = Files.newOutputStream(Paths.get(scanner.nextLine()))
)
2) в ЭТОЙ задаче:
try (Scanner scanner = new Scanner(System.in)){
var lines = Files.readAllLines(Paths.get(scanner.nextLine()));
Я совершенно не понимаю это событие)
Anonymous #2482948
44 уровень
Закрытие и открытие потока, почему?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ирина Алымова Java Developer в Nerdysoft
17 сентября 2021, 10:32полезный
var lines = Files.readAllLines(Paths.get(scanner.nextLine())); - это не поток
+1
Anonymous #2482948
17 сентября 2021, 10:44
Я понимаю, что это не поток)
Но читается по коду (....Paths.get(scanner.nextLine())....) как и у потока.
Тогда выходит, что данные можно считать из файла потоком, а можно не потоком, правильно я понимаю?
В чем тогда принципиальные различия?
0
Ирина Алымова Java Developer в Nerdysoft
17 сентября 2021, 10:59решение
в try-chatch-with-resources создаем объекты, которые имплементируют интерфейс Autoclosable
остальное вне
подозреваю что readAllLines() создает какой-то поток неявно, но это другая история, неявно создает, должен сам неявно и закрыть
+2
Ирина Алымова Java Developer в Nerdysoft
17 сентября 2021, 11:05решение
да, так и есть:
+2
Anonymous #2482948
17 сентября 2021, 22:28
Понял, значит надо еще больше разобраться в этой теме)
Спасибо!
+1