Реализовала условия, проверила на реальных файлах - результат соответствует запросу.
Валидатор не пропускает решение по 2-5 пунктам. Буду благодарна за направления мысли (направления в сторону благосклонности валидатора)!
package com.javarush.task.task18.task1825;
import java.io.*;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/*
Собираем файл
Проверка
C:\Users\Евгения\Desktop\task1825\Lion.avi.part1.txt
C:\Users\Евгения\Desktop\task1825\Lion.avi.part6.txt
C:\Users\Евгения\Desktop\task1825\Lion.avi.part5.txt
C:\Users\Евгения\Desktop\task1825\Lion.avi.part3.txt
C:\Users\Евгения\Desktop\task1825\Lion.avi.part4.txt
C:\Users\Евгения\Desktop\task1825\Lion.avi.part2.txt
end
*/
public class Solution {
public static void main(String[] args) throws IOException {
String fileName = null;
Set<String> fileNames = new TreeSet<>();
String[] finalFileNameSplit = new String[1];
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
while (!(fileName = bufferedReader.readLine()).equals("end")) {
if (fileName.contains("part")) {
finalFileNameSplit = fileName.split(".part");
fileNames.add(fileName);
} else {
System.out.println("invalid filename");
}
}
} catch (IOException e) {
e.printStackTrace();
}
String finalFileName = finalFileNameSplit[0] + ".txt";
byte[] buffer;
try (FileOutputStream fos = new FileOutputStream(finalFileName, true)) {
for (String name : fileNames) {
try (FileInputStream fis = new FileInputStream(name)) {
buffer = new byte[fis.available()];
fis.read(buffer);
fos.write(buffer);
}
}
}
// Проверка
// for (String name : fileNames) {
// System.out.println(name);
// }
// System.out.println(fileName);
// System.out.println(finalFileName);
// for (int i = 0; i < buffer.length; i++) {
// System.out.print((char) buffer[i] + " ");
// }
}
}