В чем может быть ошибка? Файл записывается как и положено. Например, из двух файлов с цифрами внутри "123" и "456" в целевой файл записывает "123456". Что интересно, статическую переменную System.in принимает нормально, а по всем остальным пунктам не проходит.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//отсортированный сет для адресов файлов
TreeSet<String> files = new TreeSet<>();
String address = "";
//получаю адрес и добавляю в сет, если он удовлетворяет условию (без проверки условия тоже не работает)
while (!(address = reader.readLine()).equals("end")) {
if (address.matches(".*Lion\\.avi\\.part\\d*")) files.add(address);
else System.out.println("Name isn't correct");
}
//создаю поток для записи
try (FileOutputStream fileOutputStream = new FileOutputStream("D:\\lion\\Lion.avi")) {
//для каждого адреса из сета запускаю поток
for (String fileNext :
files) {
try (FileInputStream fileInputStream = new FileInputStream(fileNext)) {
byte[] buffer = new byte[fileInputStream.available()];
//поочередно каждый поток считываю в буфер
fileInputStream.read(buffer);
//поочередно записываю в файл из буфера
fileOutputStream.write(buffer);
}
}
}package com.javarush.task.task18.task1825;
/*
Собираем файл
*/
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
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> files = new TreeSet<>();
String address = "";
//получаем адресса и добавляем в сет, если они удовлетворяют условию
while (!(address = reader.readLine()).equals("end")) {
if (address.matches(".*Lion\\.avi\\.part\\d*")) files.add(address);
else System.out.println("Name isn't correct");
}
//для каждого адресса запускаю поток
try (FileOutputStream fileOutputStream = new FileOutputStream("D:\\lion\\Lion.avi", true)) {
for (String fileNext :
files) {
try (FileInputStream fileInputStream = new FileInputStream(fileNext)) {
byte[] buffer = new byte[fileInputStream.available()];
fileInputStream.read(buffer);
fileOutputStream.write(buffer);
}
}
}
}
}
А почему так?UPD Почитал про лексикографический порядок, как я понял TreeSet сортирует согласно нему. А можно ли как-то изменить порядок сортировки?