У меня работает так как в идеальном решении (сужу по результату в файле - результате), валидатор говорит что нет, неверно.
Потоки самозакрывающиеся; с именами косяков нет: смотрел через печать в консоль. (или уже гоню, день сижу над решением этой задачи 😵)
Прошу помочь, в чем причина.
------------------------------------------------
Еще не пойму как работают вложенные "try", по моей логике, в строке 46, должен переписывать файл, так почему же он добавляет байты?
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 reader1 = new BufferedReader(new InputStreamReader(System.in));
TreeSet<String> treeSet = new TreeSet<>();
//F:\ДЗ\ManyFile\Lion.avi.part1
while (true){
String strIn = reader1.readLine();
if (strIn.equals("end"))
break;
else
treeSet.add(strIn);
}
String templateString = treeSet.first();
String folder = templateString.substring(0,templateString.lastIndexOf("."));
folder = folder.substring(0,folder.lastIndexOf("\\"));
//System.out.println(folder);
String newFileName = templateString.substring(templateString.lastIndexOf("\\") + 1,templateString.lastIndexOf("."));
//System.out.println(newFileName);
String fileNameForWriting = folder + "\\" + newFileName;
//System.out.println(fileNameForWriting);
try (FileOutputStream fileOutputStream = new FileOutputStream(fileNameForWriting)) {
for (String s :
treeSet) {
try (FileInputStream fileInputStream = new FileInputStream(s)) {
byte[] buffer = new byte[fileInputStream.available()];
while (fileInputStream.available() > 0){
int count = fileInputStream.read(buffer);
fileOutputStream.write(buffer,0,count);
}
}
}
}
}
}