В принципе задача была решена , на уровне практики , но Вилидатор почему то постоянно бракует один пункт.
Я переписывал код много раз , не понимаю что не так. Последний вариант вообще получился Франкенштейн : ).
То что Валик мне постоянно показывает.

package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Собираем файл
*/
// C:\Users\Stas\Desktop\Lion.avi.part37.txt
// C:\Users\Stas\Desktop\Lion.avi.part1.txt
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("(.part)\\d{1,2}");
ArrayList<String> listFilename = new ArrayList<>();
String s;
String namefile = "";
while (!(s = reader.readLine()).equals("end")){
listFilename.add(s);
namefile = s;
}
reader.close();
Collections.sort(listFilename);
Matcher m = p.matcher(namefile);
if (m.find()){
final String file = namefile.replace(m.group(),"");
for (int i = 0;i<listFilename.size();i++) {
String s1;
BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));
BufferedReader reader1 = new BufferedReader(new FileReader(listFilename.get(i)));
while ((s1 = reader1.readLine()) != null) {
writer.write(s1);
writer.newLine();
}
reader1.close();
writer.close();
}
}
}
}
// рабочий вариант с использовнием fis
/* BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("(.part)\\d{1,2}");
String s;
while (!(s = reader.readLine()).equals("end")){
Matcher m = p.matcher(s);
if (m.find()){
//System.out.println(s.replace(m.group(),""));
final String file = s.replace(m.group(),"");
FileWriter fileWriter = new FileWriter(file,true);
//BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)
//FileOutputStream fos = new FileOutputStream(file);
FileInputStream fis = new FileInputStream(s);
while (fis.available() > 0){
//fos.write(fis.read());
fileWriter.write((char)fis.read());
}
fis.close();
fileWriter.close();
}
}
reader.close();*/
// Рабочий вариант с использованием BufferedReader
/* BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("(.part)\\d{1,2}");
String s;
while (!(s = reader.readLine()).equals("end")){
Matcher m = p.matcher(s);
if (m.find()){
//System.out.println(s.replace(m.group(),""));
final String file = s.replace(m.group(),"");
String s1;
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true));
BufferedReader breader = new BufferedReader(new FileReader(s));
while ((s1 = breader.readLine()) != null) {
bufferedWriter.write(s1);
bufferedWriter.newLine();
}
breader.close();
bufferedWriter.close();
}
}
reader.close();
}*/
//тоже рабочий вариант
/* BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Pattern p = Pattern.compile("(.part)\\d{1,2}");
ArrayList<String> gap = new ArrayList<String>();
gap.add("q");
gap.add("w");
gap.add("e");
Pattern num = Pattern.compile("\\d{1,2}");
String s;
String file = "";
while (!(s = reader.readLine()).equals("end")){
Matcher m = p.matcher(s);
Matcher mm = num.matcher(s);
if (m.find()){
if (mm.find()){
System.out.println(mm.group());
System.out.println(s);
if (mm.group().equals("1")){
gap.remove(0);
gap.add(0,s);
}else if (mm.group().equals("2")){
gap.remove(1);
gap.add(1,s);
}else if (mm.group().equals("3")){
gap.remove(2);
gap.add(2,s);
}
}
//System.out.println(s.replace(m.group(),""));
file = s.replace(m.group(),"");
}
}
for (int i =0; i< gap.size();i++) {
String s1;
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true));
BufferedReader breader = new BufferedReader(new FileReader(gap.get(i)));
while ((s1 = breader.readLine()) != null) {
bufferedWriter.write(s1);
bufferedWriter.newLine();
breader.close();
bufferedWriter.close();
}
}
reader.close();*/