.
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
/*
Собираем файл
C:\Users\Admin\Desktop\1\Lion.avi.part1
C:\Users\Admin\Desktop\1\Lion.avi.part3
C:\Users\Admin\Desktop\1\Lion.avi.part2
end
*/
public class Solution {
static String getMainFileName(Set<String> set){
Iterator<String> iterator = set.iterator();
ArrayList<String> list = new ArrayList<>();
String mainFileName;
String filePath = null;
String[] path;
String[] name;
while (iterator.hasNext()){
filePath = iterator.next();
}
path = filePath.split("\\\\");
String w = path[path.length-1];
name = w.split("\\.");
for (int i = 0; i < name.length; i++) {
list.add(name[i]);
}
list.remove(list.size()-1);
mainFileName = String.join(".", list);
return mainFileName;
}
static Map<Integer, String> getSortedMap(Set<String> set){
Map<Integer, String> map = new TreeMap<>();
Iterator<String> iterator = set.iterator();
String filePath = null;
String[] path;
String[] name;
while (iterator.hasNext()){
filePath = iterator.next();
path = filePath.split("\\\\");
String w = path[path.length-1];
name = w.split("\\.");
int number = Integer.parseInt(name[name.length-1].replaceAll("[\\D]", ""));
map.put(number, filePath);
}
return map;
}
public static void main(String[] args) throws IOException {
String fileName;
String mainFileName;
Set<String> set = new TreeSet<>();
ArrayList<String> list = new ArrayList<>();
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
while(!(fileName = reader.readLine()).equals("end")){
set.add(fileName);
}
}
Map<Integer, String> map = new TreeMap<>(getSortedMap(set));
mainFileName = getMainFileName(set);
File file = new File("C:\\Users\\Admin\\Desktop\\1\\"+mainFileName);
if(file.createNewFile()){
System.out.println("Файл создан");
}else System.out.println("Файл не создан");
for (int i = 1; i <= map.size(); i++) {
try(BufferedReader br = new BufferedReader(new FileReader(map.get(i)))){
if(br.ready()){
String data;
while((data = br.readLine()) != null){
list.add(data);
}
}
}
}
try(BufferedWriter bw = new BufferedWriter(new FileWriter(file))){
for (int i = 0; i < list.size(); i++) {
bw.write(list.get(i));
}
}
}
}