Привет! Нужна помощь. Не понимаю пару вещей в коде. 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();   // А не здесь?
    }