Не могу понять в чем проблема, например,
Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
Файл создается, поток то же, что может не нравится?
Что есть буфер, имеет ввиду обязательно читать не посимвольно а сразу в массив байтов?
Созданные для файлов потоки должны быть закрыты - да вроде ж закрывается… не понимаю.. ну ничего не принимает....
Уже переписал на отдельные функции для улучшенного восприятия, результат тот же.. вроде работает все, а толку 0.
package com.javarush.task.task18.task1825;
/*
Собираем файл
*/
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
public static void main(String[] args) {
//D:\Обучение\Java\Тестовые данные\Leo.txt.part1
ArrayList<String> fileName = readFromConsole();
File fileOut = fileOutCreate(fileName.get(0));
HashMap<String,ArrayList<Integer>> fileNameParts = readeFromFiles (fileName);
writeToFile(fileOut,fileNameParts);
}
private static void writeToFile(File fileOut,HashMap<String,ArrayList<Integer>> fileNameParts) {
FileOutputStream fileOutputStream = null;
try {
fileOut.getParentFile().mkdirs();
fileOut.createNewFile();
fileOutputStream = new FileOutputStream(fileOut);
for (int i = 0; i < fileNameParts.size(); i++) {
ArrayList<Integer> content = fileNameParts.get(fileOut.toString()+".part"+(i+1));
//System.out.println(fileOut.toString()+".part"+(i+1));
for (int j = 0; j < content.size(); j++) {
fileOutputStream.write(content.get(j));
}
}
fileOutputStream.close();
//readConsole.close();
}
catch (IOException e) {}
}
private static HashMap<String, ArrayList<Integer>> readeFromFiles(ArrayList<String> fileName) {
HashMap<String,ArrayList<Integer>> fileNameParts = new HashMap();
for (int i = 0; i < fileName.size(); i++) {
try {
ArrayList<Integer> fileContent = new ArrayList<>();
//System.out.println(fileOut.toString());
File file = new File(fileName.get(i));
FileInputStream fileInputStream = new FileInputStream(file);
while (fileInputStream.available() > 0) {
fileContent.add(fileInputStream.read());
}
fileInputStream.close();
fileNameParts.put(fileName.get(i), fileContent);
}
catch (IOException e) {}
}
return fileNameParts;
}
private static ArrayList<String> readFromConsole () {
ArrayList<String> fileName = new ArrayList<>();
try (BufferedReader readConsole = new BufferedReader(new InputStreamReader(System.in));) {
while (true) {
String fileNameBuffer = readConsole.readLine();
fileName.add(fileNameBuffer);
System.out.println("fff");
if (fileNameBuffer.equals("end")) break;
}
}
catch (IOException e) {}
return fileName;
}
private static File fileOutCreate(String filesNameWithWorldPart) {
return new File(filesNameWithWorldPart.split("\\.")[0] + "." + filesNameWithWorldPart.split("\\.")[1]);
}
}