В задаче "Собираем файл" озвучены следующие требования: 1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "end". 2. Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы. 3. В новый файл перепиши все байты из файлов-частей *.partN. 4. Чтение и запись должны происходить с использованием буфера. 5. Созданные для файлов потоки должны быть закрыты. 6. Не используй статические переменные. Из всех требований мне неясно второе. Это вообще как? Если же мы заглянем в правильное решение, то увидим следующий кусок кода, инициализирующий выходной файл:
String outputFile = null;
       String readString;
       while (!(readString = reader.readLine()).equals("end")) {
           files.add(readString);
           if (outputFile == null) {
               int indexOfSuffix = readString.lastIndexOf(".part");
               outputFile = readString.substring(0, indexOfSuffix);
           }
       }
Другими словами, здесь переменной outputFile присваивается значение вырванного отрывка имени файла, из которого мы будем читать байты в последствии. Мне не очень понятно как это соотносится с требованием.