Объединение файлов

  • 10
  • Недоступна
Считать с консоли 2 имени файла. В начало первого файла записать содержимое второго файла так, чтобы получилось объединение файлов. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (156)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Валихан18 уровень, Санкт-Петербург
15 часов назад
Блин только решил, столько времени на простую задачку потерял... В общем решение то же самое что и в первый раз, только вместо файла сохранять надо в массив байт. И никаких true в конструкторе FileOutputStream не передавайте. 1ый и 2ой файлы сохраняем в 1й и 2й массивы соответственно, затем write сначала 2й и затем 1й. Удачи.
Валихан18 уровень, Санкт-Петербург
16 часов назад
Решил, все работает как надо. Но валидатор против моего варианта. Не принимает решение: создал третий файл, в который сохранил 1-ый. Буду сейчас колдовать над другим вариантом решения данной задачи. Остается сохранять не в файл, а в память компьютера.
Maxim Volkov22 уровень, Таллинн
11 октября, 14:35
Решил с помощью массивов байт. В первый и второй массив байт занес данные с файлов. Затем объединил эти массивы в третий, и вывел его в новый файл.
Вадим Сотников19 уровень, Москва
вчера, 19:53
Я тоже решил аналогично, но не стал объединять два массива в общий, а сразу записал, сначала 2-й, потом 1-й. И все сработало. На тестах тоже все писалось ок. Вот таким путем fileOutputStream.write(bytes2); fileOutputStream.write(bytes1); сразу после FileOutputStream
vadtel33 уровень, Минск
1 октября, 21:13
ВНИМАНИЕ!! Кто хочет с первой попытки - закрывайте потоки. Все просто...
Zhenya Kononov20 уровень, Санкт-Петербург
23 сентября, 09:13
Кто-нибудь может объяснить, почему конструкция outputStream1.write(buff2); outputStream1.write(buff1, buff2.length + 1, buff1.length); дает исключение IndexOutOfBoundsException и почему конструкция outputStream1.write(buff2); outputStream1.write(buff1); где buff1 и buff2 - это массивы с данными из 1 и 2 файлов работает, а не перезаписывает содержимое файлов, если я никакого append в конструкторе outputStream не прописывал? Получается, оно по умолчанию там стоит true?
Vgoose18 уровень, Москва
23 сентября, 18:33
Пока поток на запись не закрыт, каждая запись в него будет ДОписывать в файл. outputStream1.write(buff2); outputStream1.write(buff1);
omat_kisat22 уровень, MIPS Assembly
18 сентября, 08:39
Ну со второй попытки, потому что кто-то не очень внимательно читает условия (сначала записать второй, потом первый, а не наоборот, как у меня было). Итак, в циклах прочитать в два разных байт-массива, потом открыть поток для записи. Записать второй буфер, смыть за собой, записать первый. Закрыть все потоки.
Vgoose18 уровень, Москва
23 сентября, 18:32
https://javarush.ru/help/26496 Можешь понять, почему валидатор не принимает?
Vgoose18 уровень, Москва
23 сентября, 19:49
Сделал даже и через FileReader/Writer - всё равно та же ошибка "Сначала должно идти содержимое 2го файла...".
Ольга22 уровень, Москва
28 августа, 17:24
В этой задаче самое главное-последовательность действий. Сначала открываем потоки для чтения, считываем оба файла в массивы байт, закрываем потоки. И только потом открываем поток для записи.
PumpyJumpy18 уровень, Краснодар
7 ноября, 12:25
В итоге помог ваш комментарий, правда не заметил, что надо считывать с консоли 2 раза (считывал 3 для записи еще раз)
Ольга22 уровень, Москва
7 ноября, 14:41
рада помочь)
Павел Минеев41 уровень, Челябинск
27 августа, 16:09
Сдал с первого раза. Единственный момент в котором сомневался - стоит ли делать переход на новую строку перед записью содержимого первого файла? Помня прошлую задачу решил, что нет, и не прогадал. P.S. Решил задачу считав их в байтовыйе буфер-массивы. И да, я понимаю что для большого размера файла это не решение подойдёт.
Igor Zip23 уровень, Одесса
14 августа, 18:19
Почуму когда в первый файл записываю сначала второй массив, а потом первый массив - данные не перезаписываются? Я ж append true при создании потока записи не указывал!
Danil Guschin20 уровень
16 августа, 12:43
а вы пробовали? перезаписываются, просто валидатор и так принимает )
Александр Малых20 уровень, Коряжма
22 августа, 11:14
не перезаписываются, append сохраняет то что было до открытия потока этого файла пока поток не закрыт в него записывается всё что вы передаете, пока не закроете поток :)
Руслан24 уровень, Усть-Орда
3 августа, 19:35
никакой самодеятельности, только так как описано. А то я скопировал в другой файл, что то там накрутил и валидатор ваще ни один пункт не принял. Третий раз переделываю, хотя все работает нормально.((((