Вот убил кучу времени, решил эту задачу двумя способами, но естественно ни один не подошел, хочется ругаться матом XD не зря где то читал, что профессия программист на первом месте по матюкам, прошу помощи)
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileNamePart;
List<String> filesNames = new ArrayList<>();
String fileName = null;
// Считываем имена файлов
while (true) {
fileNamePart = reader.readLine();
if (fileNamePart.equals("end")) {
break;
}
if (fileNamePart.contains("part")) {
filesNames.add(fileNamePart);
} else {
fileName = fileNamePart;
}
}
reader.close();
Collections.sort(filesNames, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] o1List = o1.split("part");
String[] o2List = o2.split("part");
if (Integer.parseInt(o1List[1]) > Integer.parseInt(o2List[1])) {
return 1;
} else if (Integer.parseInt(o1List[1]) < Integer.parseInt(o2List[1])) {
return -1;
} else {
return 0;
}
}
});
// Создаем поток для записи в файл без суфикса
for (int i = 0; i < filesNames.size(); i++) {
FileOutputStream fileOutputStream = new FileOutputStream(fileName, true);
FileInputStream fileInputStream = new FileInputStream(filesNames.get(i));
byte[] buffer = new byte[fileInputStream.available()];
fileInputStream.read(buffer);
fileOutputStream.write(buffer);
fileInputStream.close();
fileOutputStream.close();
}
}
}