InputStreamReader ISR = new InputStreamReader(System.in); // Вводим имя файла и преобразуем во входящий поток
        BufferedReader BR = new BufferedReader(ISR); // кидаем все в буфер чтобы не брать по одному символу, а прочесть строку целиком для места хранения файла

        String FileName = BR.readLine();  // читаем строку и присваиваем переменной FileName

        FileInputStream FIS = new FileInputStream(FileName);  // Формируем входящий поток из файла
        Scanner scan = new Scanner(FIS); // почему-то не копируем в буфер, а используем класс Scanner возможно потому, что надо читать каждый символ отдельно
        // таким образом открыт поток scan и его надо будет закрыть.
        ArrayList<Integer> fill= new ArrayList<>(); // создаем коллекцию arrayList
        while (scan.hasNext()) {      // Проверяем, что пока во входящем потоке из файла есть след символ, то выполняем дальнейшую инструкцию
            int data =  scan.nextInt();  // переменной примитивного типа присваеваем значение из файла потока
            if (data%2==0) fill.add(data); // если делится на 2 без остатка, то наполняем коллекцию
            }
        Collections.sort(fill);    // сортируем коллекцию, так как значений не указано, то по умолчанию она сортируется по возрастанию
        for (Integer x: fill) { // каждый символ х в коллекции оборачиваем в класс Integer (в этом случае он уже был таким)
            System.out.println(x);   // печатаем
        }
        scan.close();  // закрываем доступ к файлу

        // а то что InputStreamReader открыт, это ничего или он не открыт?