Привет! Нужна помощь. Не понимаю пару вещей в коде.
1. Почему нужно закрывать bufferedWriter внутри while loop, а не, например, снаружи. Если закрыть поток вне while loop, то вылетает IOException с сообщением Stream closed. Разве использование стрима не прекратилось внутри while loop?
2. Текст в файле такой же, как в условии. [12 text var2 14 8ю 1]. Если идти пошагово через дебаггер, то первый элемент - "12" не проходит условие и не записывается в файл. В чем причина?
Заранее спасибо за помощь!
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
FileReader fileReader = new FileReader(file1);
FileWriter writer = new FileWriter(file2);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
reader = new BufferedReader(fileReader);
while (reader.ready()) {
String[] content = reader.readLine().split("\\s");
for (String str : content) {
if (str.matches("\\d+")) {
bufferedWriter.write(str + " ");
}
}
bufferedWriter.close(); // Почему нужно закрывать bufferedWriter именно здесь?
}
fileReader.close();
writer.close();
reader.close();
// bufferedWriter.close(); // А не здесь?
}