Все сделал, отладил вроде...Но ругается валидатор на вот это(я так понимаю, главное -это пункт 3. А остальное, это мелочи, следствие из этого-потому что третий не работает):
3. В новый файл перепиши все байты из файлов-частей *.partN.
4. Чтение и запись должны происходить с использованием буфера.
5. Созданные для файлов потоки должны быть закрыты.
Любому совету буду рад!
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
Map<Integer, String> map = new TreeMap<>();
String total_filename = null;
String output_file_path = null;
while ((true)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();
if (!filename.equals("end")) {
int position = 0; // позиция на которой находится последний \ - то есть конец пути файла.
// Дальше пойдет его название.
for (int i = 0; i < filename.length(); i++) {
String temp = filename.substring(i, i + 1);
if (temp.equals("\\")) {
position = i;
}
}
//ищем цифру-номер куска
int devider_position = 0; //реальный номер куска будет начинаться отсюда и до конца строки
for (int i = 0; i < filename.length(); i++) {
String temp = filename.substring(i, i + 1);
if (temp.equals(".")) {
devider_position = i;
}
}
output_file_path = filename.substring(0, devider_position);
String part = filename.substring(devider_position + 5, filename.length());
int part_number = Integer.parseInt(part);
map.put(part_number, filename);
}//пока не введено "end"
else {
reader.close();
break;
}
}//while(true)
//закончили наполнять базу. Теперь надо собрать файл, дергая записи из мапы:
FileOutputStream fileOutputStream = new FileOutputStream(output_file_path, true);
for (int j = 0; j < map.size(); j++) {
FileInputStream fileInputStream = new FileInputStream(map.get(j));
byte[] buffer = new byte[1000];
while (fileInputStream.available() > 0) //пока есть еще непрочитанные байты
{
int count = fileInputStream.read(buffer);
fileOutputStream.write(buffer, 0, count);
}
fileInputStream.close();
}
fileOutputStream.close();
}
}