Протестировал всё, что знал сам. На пустой файл выводит пустоту, на файл с нечетными тоже ничего не пишет. Почитав комментарии, я понял, что есть способы проще. Но меня они пока что не устраивают, поскольку интересно сдать именно этот код. Код и задача прикреплены.
package com.javarush.task.task13.task1326;

/*
Сортировка четных чисел из файла
*/

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class Solution {
    public static void main(String[] args) throws IOException {
        // напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine(); //считали имя файла
        reader.close(); //закрыли поток чтения с консоли
        InputStream in = new FileInputStream(fileName); //открыли поток чтения из файла
        List<Integer> list = new ArrayList<>(); //массив, в который будут записываться только четные числа
        List<Integer> num = new ArrayList<>(); //массив, в который будут записываться только
        while (in.available() > 0) {  //пока можем читать
            char c = (char) in.read(); //считываем символ
            if (!(c > 47 && c < 58)) { //если это не число, то
                int i = num.size() - 1; //получаем кол-во чисел в этом числе - 1
                if (i != -1) { //если массив не пустой, то
                    int ans = 0; //в эту переменную запишем число
                    for (int j = 0; j < num.size(); j++) { //проходимся по массиву
                        int k = num.get(j);  //в k пишем текущую цифру
                        ans += k * (int) Math.pow(10, i); //домножаем её на 10 в нужной степени
                        i--; //уменшаем степень для следующего числа
                    }
                    if (ans % 2 == 0) { //проверяем получившееся число на четность
                        list.add(ans); //если четное, то добавляем в существующий итоговый массив
                    }
                    num = new ArrayList<>(); //обнуляем массив цифр
                }
            } else { //если считанный символ - цифра (от 48 до 57), то
                num.add((int) c - 48); //довавляем его в виде числа в массив num
            }
        }
        int i = num.size() - 1; //проделываем 25-35 строки (перевод массива цифр в число)
        if (i != -1) { // для того, что сейчас хранится в массиве, если там что-то есть
            int ans = 0;
            for (int k : num) {
                ans += k * (int) Math.pow(10, i);
                i--;
            }
            if (ans % 2 == 0) {
                list.add(ans);
            }
        }
        in.close(); //закрываем поток чтения из файла
        if (list.size() == 0){ //если чисел в массиве нет, то завершаем программу
            return;
        }
        Collections.sort(list); //сортируем встроенным методом, поскольку мой вариант отказался работать на один из тестов
//        Object[] mas =  list.toArray();
//        for (int j = 0; j < mas.length; j++) {
//            for (int k = j; j < mas.length; j++) {
//                if ((Integer)mas[k] >(Integer) mas[j]) {
//                    Integer l = (Integer)mas[j];
//                    mas[j] = mas[k];
//                    mas[k] = l;
//                }
//            }
//        }
//        for (Object k:mas) {
//            System.out.println(k);
//        }
        for (int j = 0; j < list.size(); j++) { //выводим результат на экран
            System.out.println(list.get(j));
        }
    }
}