public class Solution {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
List<String> reader = Files.readAllLines(Path.of(scanner.nextLine()));
for (String element : reader) {
char[] elements = element.toCharArray();
for (char eachelement : elements) {
if (eachelement != '.' && eachelement != ',' && eachelement != ' ') {
System.out.print(eachelement);
}
}
}
} catch (Exception exception) {
System.out.println("Something went wrong: " + exception);
}
}
}
Не совсем понятно, почему мы не оборачиваем в круглые скобки после try эту часть: Files.readAllLines(Path.of(scanner.nextLine())). Ведь это поток и он должен быть в случае ошибки закрыт. Да, в документации на oracle написано, что метод readAllLines autoclosable, то есть закрывается после того, как все данные будут прочтены, но может ли возникнуть ситуация, когда вылезет эксепшн, а поток будет открыт?Chillentino
37 уровень
Как работает метод readAllLines?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
xsidorovx
8 сентября 2022, 20:07
Path.of изменил на Path.get.
IDEA красит красный of почему-то
0
IIV
27 июня 2022, 18:25
Искал информацию, как работает метод readAllLines. В итоге сразу и ответ, почему метод "не хочет в try" и решение задачи) Не то, что бы задача сложная, но увидев это решение один раз, сложно его забыть и пробовать мыслить с чистого листа.
+5
Ksenia Volkova Java Developer в DXC Master
15 сентября 2021, 15:35решение
Ты можешь посмотреть, как работает метод readAllLines в Идее - нажми Ctrl и кликни на метод.
Внутри него используется try with resources.
+14
Chillentino
15 сентября 2021, 15:57
Оу, спасибо, не знал про это
0