Посмотрел как у других, неужели переписывать ByteArrayOutputStream :(
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
List<String> files = new ArrayList<>();
String nameFile;
//Reading
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (!(nameFile = reader.readLine()).contains("end")) files.add(nameFile);
reader.close();
//Sort part
files.sort(Comparator.comparingInt(s ->
Integer.parseInt(s.replaceAll(".*\\.part", ""))));
//Create buffer for concatenation
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//Concatenation part to buffer
files.forEach(s -> {
try (FileInputStream inputStream = new FileInputStream(s)) {
while (inputStream.available() > 0) outputStream.write(inputStream.read());
} catch (IOException e) {
e.printStackTrace();
}
});
//Get file for write
String orig = files.get(0).replaceAll("\\.part.*", "");
//Write buffer to FileStream
FileOutputStream fileOutputStream = new FileOutputStream(orig);
outputStream.writeTo(fileOutputStream);
fileOutputStream.close();
outputStream.close();
//End :)
}
}