Подскажите, пожалуйста. Решил с помощью BufferedReader(new FileReader(outputFileName)); Выглядит это так:
BufferedReader fileReader = new BufferedReader(new FileReader(outputFileName));
String currentString;
while((currentString = fileReader.readLine()) != null) {
    list.add(Integer.parseInt(currentString));
}
    fileReader.close();

    Collections.sort(list);

    for (Integer a : list) {
        if (a % 2 == 0) System.out.println(a);
    }
Но валидатору такое не нравится. Он пишет что решение должно быть с помощью FileInputStream. И вот здесь я немного поплыл и выдал с моей точки зрения очень громоздкое и дурацкое решение, которое тем ним менее работает, судя по дебагу.
FileInputStream fileReader = new FileInputStream(outputFileName);

       int i;
       String b = "";

       // цикл пока не прочитаем до конца файла
       while ((i = fileReader.read()) != -1) {
           // если достигли символа перевода каретки i == 13, то строку парсим в инт и добавляем в коллекцию
           if (i == 13) {
               list.add(Integer.parseInt(b));
               b = "";
           }
           // пропускаем символ переноса строки i == 10
           else if (i != 10) {
               // если встречаем знак минус i==45, то обрабатываем его отдельное
               if (i == 45) b = b + "-";
               // если i не минус, то считаем что это код цифры. Добавляем его числовое значение к строке
               else b = b + Integer.toString(Character.getNumericValue(i));
           }
       }

           fileReader.close();

           Collections.sort(list);

           for (Integer a : list) {
               if (a % 2 == 0) System.out.println(a);
           }
Однако это решение валидатору тоже не нравится, он пишет что программа выводит слишком мало строк. Может я очень невнимателен, но вывод у программы корректный. Подскажите, что не так? Спасибо