Не могу победить валидатор, прошу помочь.
Честно отлаживался на нескольких частях файлов, всё корректно сортируется и склеивается в один.
package com.javarush.task.task18.task1825;
/*
Собираем файл
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Objects;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line;
ArrayList<String> filePartNames = new ArrayList<>();
//Программа должна считывать имена файлов с консоли, пока не будет введено слово "end".
while (!Objects.isNull(line = bufferedReader.readLine())) {
if ("end".equals(line)) {
break;
}
filePartNames.add(line);
}
bufferedReader.close();
Comparator<String> comparator = (o1, o2) -> {
Integer num1 = Integer.parseInt(o1.substring(o1.lastIndexOf(".part") + 5));
Integer num2 = Integer.parseInt(o2.substring(o2.lastIndexOf(".part") + 5));
return num1.compareTo(num2);
};
filePartNames.sort(comparator);
//Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
String outFileName = filePartNames.get(0).substring(0,filePartNames.get(0).lastIndexOf(".part"));
try (FileOutputStream fileOutputStream = new FileOutputStream(outFileName)) {
for (String filePartName : filePartNames) {
try (FileInputStream fileInputStream = new FileInputStream(new File(filePartName))) {
//Чтение и запись должны происходить с использованием буфера.
byte[] buffer = new byte[fileInputStream.available()];
int count = fileInputStream.read(buffer);
//В новый файл перепиши все байты из файлов-частей *.partN.
fileOutputStream.write(buffer, 0, count);
}
}
}
}
}
всрчестно потратил несколько часов, и моё обращение за помощью - жест отчаянья. bufferedReader.readLine, дока: Returns: A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached