Проверял на практике - все работает. Заменил reader на output/inputStream - бесполезно
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) {
ArrayList<String> files = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true){
String line = sc.nextLine();
if (line.equals("end")){
break;
}
else {
int pos = line.indexOf(".part")+5;
int partNum = Integer.valueOf(line.substring(pos).trim());
if (partNum>files.size()){
files.add(line);
}
else {
files.add(partNum-1,line);
}
}
}
sc.close();
if (files.size()>0){
int pos = files.get(0).indexOf(".part");
String destFile = files.get(0).substring(0,pos);
FileInputStream reader = null;
try (FileOutputStream writer = new FileOutputStream(destFile)) {
for (String file:files){
if (file!=null) {
reader = new FileInputStream(file);
if (reader.available()>0) {
byte[] buffer = new byte[reader.available()];
int count = reader.read(buffer);
writer.write(buffer);
}
reader.close();
}
}
}
catch (Exception e){
}
}
}
}