В чем может быть ошибка? Файл записывается как и положено. Например, из двух файлов с цифрами внутри "123" и "456" в целевой файл записывает "123456". Что интересно, статическую переменную System.in принимает нормально, а по всем остальным пунктам не проходит.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        //отсортированный сет для адресов файлов
        TreeSet<String> files = new TreeSet<>();
        String address = "";
//получаю адрес и добавляю в сет, если он удовлетворяет условию (без проверки условия тоже не работает)
        while (!(address = reader.readLine()).equals("end")) {
            if (address.matches(".*Lion\\.avi\\.part\\d*")) files.add(address);
            else System.out.println("Name isn't correct");
        }
//создаю поток для записи
        try (FileOutputStream fileOutputStream = new FileOutputStream("D:\\lion\\Lion.avi")) {

//для каждого адреса из сета запускаю поток
            for (String fileNext :
                    files) {

                try (FileInputStream fileInputStream = new FileInputStream(fileNext)) {

                    byte[] buffer = new byte[fileInputStream.available()];
//поочередно каждый поток считываю в буфер
                    fileInputStream.read(buffer);
//поочередно записываю в файл из буфера
                    fileOutputStream.write(buffer);
                }
            }
        }