Добрый день, на писал код, реализующий функционал задачи.
Код работает:
Считывает с консоли имена файлов, пока не введено слово end.
Читает все эти файлы, создаёт новый и записывает туда все данные.
Однако не прошли все пункты связанные с заданием. Можете подсказать что я делаю не так, возможно я не правильно понял условие задачи?
package com.javarush.task.task18.task1825;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
/*
Собираем файл
*/
public class Solution {
private static class FileData {
private String fileName;
private byte[] fileData;
public FileData(String fileName, byte[] fileData) {
this.fileName = fileName;
this.fileData = fileData;
}
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Map <Integer, FileData> mapData = new TreeMap<>();
String fileParth = "";
while (true) {
String str = reader.readLine();
if (str.equals("end")) {
break ;
}
fileParth = str.substring(0,str.lastIndexOf("\\") + 1);
String fileName = str.substring(0,str.lastIndexOf(".part"));
int number = Integer.parseInt(str.substring(str.lastIndexOf(".part") + 5));
FileInputStream fis = new FileInputStream(fileName);
byte[] arr = new byte[fis.available()];
fis.read(arr);
mapData.put(number, new FileData(fileName,arr));
fis.close();
}
Set<Map.Entry<Integer, FileData>> entries = mapData.entrySet();
String strRes = entries.stream()
.map(entry -> new String(entry.getValue().fileData))
.collect(Collectors.joining());
Path path = Paths.get(fileParth + "taskResult.txt");
Files.createFile(path);
FileOutputStream fos = new FileOutputStream(fileParth + "taskResult.txt");
fos.write(strRes.getBytes());
fos.close();
}
}