ArrayList<File> vuhod = new ArrayList<>();
//Коллекция vuhod заполнена файлами
File res1 = new File("D:\\allFilesContent.txt");
//Файл res1 (который точно существует) для записи того, что мы считаем из каждого файла vuhod
BufferedWriter writer = new BufferedWriter(new FileWriter(res1));
for (int i = 0; i < vuhod.size(); i++)
{
BufferedReader reader = new BufferedReader(new FileReader(vuhod.get(i)));
while (reader.ready())
{
writer.write(reader.readLine());
}
if (i == vuhod.size() - 1) {
} else {
writer.write('\r');
writer.write('\n');
}
Почему не заполняется файл, и что значат строки writer.write('\r'); и writer.write('\n');?
Запись в файл не идёт, так как вы не вызываете метод flush у writer.
BufferedWriter пишет данные в свой буфер (размер по умолчанию которого равен 8192 символам) и в выходной поток (FileWriter) отправляет данные из буфера только при его заполнении или при вызове flush() или close().
Также стоит закрывать за собой потоки чтения и записи. Для это удобно использовать конструкцию try-with-resources. Вызов метода close у BufferedWriter, кстати, приводит к отправке данных из буфера в выходной поток, так что в этом случае вызывать метод flush вручную не придётся.
В итоге код выглядит так:
List<File> vuhod = Arrays.asList(new File("in1.txt"), new File("in2.txt"));
File res1 = new File("out.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(res1)))
{
for (int i = 0; i < vuhod.size(); i++)
{
try (BufferedReader reader = new BufferedReader(new FileReader(vuhod.get(i))))
{
while (reader.ready())
{
writer.write(reader.readLine());
}
if (i < vuhod.size() - 1)
{
writer.write('\r');
writer.write('\n');
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
у меня работает так:
public static void main(String[] args) throws IOException {
String path = "E:\\MyProjects\\StackO\\questions\\634328";
List<File> files = new ArrayList<>();
files.add(new File(path + "\\1.txt")) ;
files.add(new File(path + "\\2.txt")) ;
files.add(new File(path + "\\3.txt")) ;
files.add(new File(path + "\\4.txt")) ;
BufferedWriter writer = new BufferedWriter(new FileWriter(path + "\\ConcatFile.txt"));
for(File file: files){
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line=reader.readLine()) != null){
writer.write(line);
}
reader.close();
}
writer.close();
}
Это если очень уж надо на чистом io
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники