package com.javarush.test.level18.lesson10.home10;

/* Собираем файл
Собираем файл из кусочков
Считывать с консоли имена файлов
Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end"
В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
Закрыть потоки. Не использовать try-with-resources
*/

import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<>();
        while(true) {
            String s = reader.readLine();
            if (s.equals("end")) break;
            else list.add(s);
        }
        String outputFileName;
        StringTokenizer st = new StringTokenizer(list.get(0), ".");
        String[] nameParts = new String[st.countTokens()];
        int count = 0;
        boolean b = false;
        while (st.hasMoreTokens()) {
            nameParts[count] = (st.nextToken());
            count++;
        }
        outputFileName = nameParts[0] + "." + nameParts[nameParts.length - 2];
        for (int i = 1; i <= list.size(); i++) {
            if (i > 1) b = true;
            for (String s : list) {
                StringTokenizer stringTokenizer = new StringTokenizer(s, ".");
                String[] nameParts2 = new String[stringTokenizer.countTokens()];
                int count2 = 0;
                while (stringTokenizer.hasMoreTokens()) {
                    nameParts2[count2] = (stringTokenizer.nextToken());
                    count2++;
                }
                char[] ch = nameParts2[nameParts2.length - 1].toCharArray();
                if (i == (Integer.parseInt(Character.toString(ch[ch.length - 1])))) {
                    writeToFile(s, outputFileName, b);
                }
            }
        }
        reader.close();
    }

    private static void writeToFile(String inputFile, String outputFile, boolean isFinishing) throws IOException {
        FileInputStream inputStream = new FileInputStream(inputFile);
        FileOutputStream outputStream = new FileOutputStream(outputFile, isFinishing);
        byte[] buffer = new byte[1000];
        while (inputStream.available() > 0) {
            int count = inputStream.read(buffer);
            outputStream.write(buffer, 0, count);
        }
        inputStream.close();
        outputStream.close();
    }
}