Вечно он ругается что потоки не закрыты если юзаешь try-with-resources. Правильно ли я понимаю что если в трае кинет исключение, ресурсы все равно будут закрыты, несмотря на отсутствие finally и валидатор тут цепляется не по делу? Ну а так - все как обычно "Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы." Вот же: Убрали суффикс
String resulFileName = fileParts.firstKey().toPath().toString();
resulFileName = resulFileName.substring(0,resulFileName.lastIndexOf(".part"));
Создали поток.
try (OutputStream fileOutputStream = new FileOutputStream(resulFileName))
"В новый файл перепиши все байты из файлов-частей *.partN. Чтение и запись должны происходить с использованием буфера."
for (Map.Entry entry:
        fileParts.entrySet()) {
    byte[] filePartData = (byte[])entry.getValue();
    fileOutputStream.write(filePartData);
}
Данные в файл пишет - по поводу буффера, ну массивами пишу же - считай буффер тоже есть. "Созданные для файлов потоки должны быть закрыты." Ну, тут я считаю что try-with-resources это за меня сделает. По поводу "end" вообще только сейчас увидел - но валидатор принял этот пункт) Еще ругается на "Файлы переписывать нужно не в порядке добавления, а от первой части к последней." Ну так мапа же реализует интерфейс SortedMap, то бишь для элементов происходит сортировка по natural order, если не передан компаратор - проверял, все по порядку сортирует