Подскажите, что не так? Программа работает, а валидатор не принимает
package com.javarush.task.task18.task1825;
/*
Собираем файл
*/
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
Map<String, CFile> fileMap = new HashMap<>();
Scanner scanner = new Scanner(System.in);
String fileName;
while (!(fileName = scanner.nextLine()).equals("end")) {
String[] array = splitFileName(fileName);
String fName = array[0];
String fPart = array[1];
CFile cFile = getFile(fName, fileMap);
cFile.parts++;
}
for (CFile cFile : fileMap.values()) {
FileOutputStream fos = new FileOutputStream(cFile);
for (int i = 1; i <= cFile.parts; i++) {
String filePartName = cFile.getAbsolutePath() + ".part" + i;
FileInputStream fis = new FileInputStream(filePartName);
fos.write(readInputStream(fis));
}
fos.close();
}
}
private static byte[] readInputStream(InputStream inputStream) throws IOException {
List<Byte> byteList = new ArrayList<>();
byte[] buffer = new byte[2048];
while (inputStream.available() > 0) {
int count = inputStream.read(buffer);
for (int i = 0; i < count; i++) {
byteList.add(buffer[i]);
}
}
inputStream.close();
byte[] array = new byte[byteList.size()];
for (int i = 0; i < byteList.size(); i++) {
array[i] = byteList.get(i);
}
return array;
}
private static CFile getFile(String fName, Map<String, CFile> fileMap) {
if (!fileMap.containsKey(fName)) {
CFile cFile = new CFile(fName);
fileMap.put(fName, cFile);
}
return fileMap.get(fName);
}
private static String[] splitFileName(String fileName) {
String[] array = fileName.split("\\.");
StringBuilder fileNameBuilder = new StringBuilder();
for (int i = 0; i < array.length - 1; i++) {
fileNameBuilder.append(array[i] + ".");
}
fileNameBuilder.deleteCharAt(fileNameBuilder.length() - 1);
String fName = fileNameBuilder.toString();
String fPart = array[array.length - 1];
if (fPart.startsWith("part")) {
return new String[]{fName, fPart};
} else {
return null;
}
}
public static class CFile extends File {
public int parts = 0;
public CFile(String pathname) {
super(pathname);
}
}
}
/*
Собираем файл
Собираем файл из кусочков.
Считывать с консоли имена файлов.
Каждый файл имеет имя: [someName].partN.
Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end".
В папке, где находятся все прочтенные файлы, создать файл без суффикса [.partN].
Например, Lion.avi.
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
Закрыть потоки.
Требования:
1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "end".
2. Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
3. В новый файл перепиши все байты из файлов-частей *.partN.
4. Чтение и запись должны происходить с использованием буфера.
5. Созданные для файлов потоки должны быть закрыты.
6. Не используй статические переменные.
*/