Поток для записи создаю, буфер использую, потоки закрываю. 1 условие в котором я сомневался больше всего проходит нормально. Проверял - создался файл из частей туда записались все части в нужном порядке... Вообщем не пойму что нужно валидатору.
package com.javarush.task.task18.task1825;
/*
Собираем файл
*/
import java.io.*;
import java.util.TreeSet;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bR = new BufferedReader(new InputStreamReader(System.in));
String fileName;
String someName = "";
TreeSet<String> parts = new TreeSet<>();
while (!(fileName = bR.readLine()).equals("end")) {
boolean c = fileName.matches("([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?.part[1-9]\\d*");
if (!c) {
System.out.println("Неправильный формат части файла фильма");
continue;
}
if (someName.isEmpty()) {
someName = fileName.substring(0, fileName.lastIndexOf(".part"));
System.out.println("Собираем части для фильма: " + someName);
}
if (fileName.substring(0, fileName.lastIndexOf(".part")).equals(someName)) {
parts.add(fileName);
} else {
System.out.println("Часть файла не для фильма: " + someName);
continue;
}
}
bR.close();
File fileFilm = new File(someName);
// System.out.println(fileFilm.getParentFile());
FileOutputStream fileOS = new FileOutputStream(fileFilm);
byte[] buffer;
for (String part : parts) {
FileInputStream fileIS = new FileInputStream(part);
buffer = new byte[fileIS.available()];
fileIS.read(buffer);
fileOS.write(buffer);
fileOS.flush();
fileIS.close();
}
fileOS.close();
}
}