package com.javarush.task.task13.task1318;
import java.io.*;
import java.util.Scanner;
import java.util.stream.Collectors;
/*
Чтение файла
*/
public class Solution {
public static void main(String[] args) throws IOException {
// напишите тут ваш код
Scanner scanner = new Scanner(System.in);
String path = scanner.nextLine();
InputStream is = new FileInputStream(path);
InputStreamReader read = new InputStreamReader(is);
BufferedReader reader= new BufferedReader(read);
for (String str : reader.lines().collect(Collectors.toList())) {
System.out.println(str);
}
reader.close();
read.close();
is.close();
scanner.close();
}
}Sergey
24 уровень
Почему пишет, что потоки не закрыты??? хотя когда проверяю пишет что потоки закрыты.......это 10е решение уже делал в разных вариациях и даже try with recourses, ниче не понимаю
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Olga Kuzmins
6 января 2024, 19:08
Всё, кроме сканнера, нужно засунуть в try-with-resource, видела у кого-то подобный вариант решения, который прошел валидацию.
Я тоже настрадалась в процессе решения с этими потоками и в итоге сделала через try-catch-finally с явным созданием всех переменных со значением null, а потом их явным закрыванием, тогда валидатор пропустил.
+1
Olga Kuzmins
6 января 2024, 19:32
Вот как я изначально хотела:
public class Solution {
public static void main(String[] args) throws IOException {
try (Scanner scanner = new Scanner(System.in);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(scanner.nextLine())))) {
while (bufferedReader.ready()) {
System.out.println(bufferedReader.readLine());
}
}
}
}
+1
Olga Kuzmins
6 января 2024, 19:33
и вот насколько пришлось все это дело раскрыть, чтобы задачу приняли:
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = null;
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try {
scanner = new Scanner(System.in);
fileInputStream = new FileInputStream(scanner.nextLine());
inputStreamReader = new InputStreamReader(fileInputStream);
bufferedReader = new BufferedReader(inputStreamReader);
while (bufferedReader.ready()) {
System.out.println(bufferedReader.readLine());
}
}
finally {
scanner.close();
fileInputStream.close();
inputStreamReader.close();
bufferedReader.close();
}
}
}
+1
Sergey
8 января 2024, 07:07
да я тоже так изначально сделал)) бесячая задача)
0
Sergey
6 января 2024, 09:58
Короче все дело в
но хотелось бы понять почему этот стрим не закрывается и как его закрыть?
0
Стас ПасинковSoftware Developer в ZipyMaster
6 января 2024, 21:54
думаю ви не зможете закрити те, на що у вас нема посилання.
просто не треба було робити через стрім апі
+1