Нужный результат получается в чем проблема???
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
HashMap<Integer, ArrayList<Byte>> lists = new HashMap<>();
ArrayList<Byte> res = new ArrayList<>();
String fosFile=null;
while (true){
String file = reader.readLine();
if (file.equals("end")) {
reader.close();//поток закрыт
break;
}
ArrayList<String> st1 = new ArrayList<>();
ArrayList<String> st2 = new ArrayList<>();
ArrayList<Byte> list = new ArrayList<>();
for(String p: file.split("part")){
st1.add(p);
}
String p1 = st1.get(st1.size()-1);
for(String x: p1.split("\\.")){
st2.add(x);
}
int x = Integer.parseInt(st2.get(0));
FileInputStream fis = new FileInputStream(file);
while (fis.available()>0){
byte q= (byte)fis.read();
list.add(q);
}
fis.close(); //потопк чтения из файла в каждом цикле закрыт.
lists.put(x,list);
fosFile = st1.get(0)+st2.get(st2.size()-1);//путь и имя файла куда будет осуществленна запись, реально был создан нужный файл.
}
for (int i=0;i<lists.size();i++){
for (int j=0; j<lists.get(i+1).size();j++){
res.add(lists.get(i+1).get(j));
}
}
byte[] buffer = new byte[res.size()]; //буфер использую
for (int i = 0; i < res.size();i++){
buffer[i]=res.get(i);
}
FileOutputStream fos = new FileOutputStream(fosFile);
fos.write(buffer,0,res.size());
fos.close(); //поток закрыт!!!
}
}