Собственно вот такой результат:
хотя по факту запись в файлы проходит корректно, проверял на небольших текстовых файлах.
строка 31 - это тестовый вывод для наглядности
Подскажите добрые люди где я накосячил?
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
TreeSet<String> mySet = new TreeSet<>(new MyComparator()); // множество для хранения имен файлов
while (true) {
String sourceFileName = reader.readLine(); // читаем строку
if (sourceFileName.equals("end")) break; // если считали "end" то прекращаем считывать
mySet.add(sourceFileName); // заносим считаное имя файла в множество
}
reader.close(); // закрываем поток для чтения
String temp = mySet.first();
String destinationFileName = temp.substring(0,temp.lastIndexOf(".")); // остается только нужная по условию часть "C:\Lion.avi"
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File(destinationFileName))); // поток для записи
for (String fileName : mySet) {
BufferedReader bufferedReader = new BufferedReader(new FileReader(new File(fileName))); // поток для записи
while (bufferedReader.ready()) {
System.out.println("Read in " + fileName + ". Write to " + destinationFileName);
int tmp = bufferedReader.read(); // читаем байт
bufferedWriter.write(tmp); // записываем байт
}
bufferedReader.close(); // закрываем поток
}
bufferedWriter.close(); // закрываем поток
}
public static class MyComparator implements Comparator<String> {
// сортирует множество по последнему числу в именах файлов
@Override
public int compare(String o1, String o2) {
int x = Integer.parseInt(o1.substring(o1.lastIndexOf(".")+5));
int y = Integer.parseInt(o2.substring(o2.lastIndexOf(".")+5));
if (x > y) return 1;
else if (x < y) return -1;
else return 0;
}
}
}