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

  • 10
  • Недоступна
Считать с консоли 2 имени файла. В начало первого файла записать содержимое второго файла так, чтобы получилось объединение файлов. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (234)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Андрей 19 уровень, Москва
вчера, 11:49
ByteArrayOutputStream таки рулит. При этом запись в файл можно производить двум способами: 1. В метод write потока на запись передать ByteArrayOutputStream как byte[]; 2. В метод writeTo класса ByteArrayOutputStream передать поток на запись.
Andrei Po 22 уровень
16 октября, 11:51
нашёл далеко внизу в комментариях полезный совет. решил поднять его наверх : "... переменная append проверяется только при создании нового потока. А после того, как поток открыт, Java считает, что идёт процесс записи файла до тех пор, пока поток не закроется, даже если данные будут поступать с перерывами по времени и из разных источников. Наверное именно из-за этого, в первую очередь, не рекомендуется держать поток открытым сверх крайней необходимости." (с)
Андрій Денисюк 29 уровень
13 октября, 13:51
Куча методов решения, но я с этим заморачиваться не стал. Всё довольно типично. Для понимания моего решения нужно вспомнить, что в кострукторы некоторых записывающих в файл классов можно передать кроме имя файла записывать ли в конец, либо переписать файл полностью! А теперь смотрим: 1. Инициализация: - Считать строки (имя второго файла нужно записать в переменную). - Сделать поток, который будет читать из первого файла - Сделать поток, который будет читать из второга файла - Сделать поток, который будет записывать в второй файл 2. Считывание содержимого: - Считать содержимое первого файла - Считать содержимое второго файла 3. Записываем: - Сначала записываем содержимое первого файла - Потом записываем содержимое второго файла 4. Ну и не забываем закрыть потоки 🙂. Всё! Готово! Может, это и слишком сложно и долго, но до этого я додумался сам. Только это меня и радует 😅...
Dmitry Fedorov 20 уровень
11 октября, 05:27
Не надо ничего придумывать, нужно использовать что уже есть в jdk
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Дальше делать запись в массив содержимое второго файла, первого файла, а после в первый файл записать содержимое массива.
7 октября, 04:48
Не работает метод readAllBytes(), задача на сервере просто не скомпилировалась. Наверно на сервере стоит старая версия Java. Когда переписал без нее, валидатор принял, но защитал 2 попытки. Обидно, ведь в IDE все работало с 1-го раза
Andrei Po 22 уровень
16 октября, 11:26
у меня тоже не работал этот метод. он добавлен в java 9
Евгений 25 уровень, Москва
17 сентября, 07:51
Начал решать задачу: открыл сразу все потоки, вроде бы написал правильный код, но 1 файл затирается, подумал, почитал коменты и понял что: потоки нужно открывать и закрывать по мере необходимости.
Анастасия Ka 19 уровень, Санкт-Петербург
1 сентября, 10:44
а как красивее закрывать потоки, все в конце кода или по мере их ненадобности?
Михаил Клименко 19 уровень, Краснодар
13 августа, 06:22
Всего эту задачу решили 16807 учеников. Считал первый файл в массив байтов, считал второй файл в другой массив байтов Записал в первый файл сначала второй массив, потом первый массив Закрыл все 5 потоков
Вася 37 уровень, Новосибирск
23 июля, 10:20
Любопытный косяк валидатора(или я туплю). Решил сначала сделать простым логичным способом: переписать файл1 в файл2(+append), а затем файл2 в файл1. Потестил в IDE все ок. Валидатор ругается на все пункты начиная с третьего! Сделал все через массив байтов - валидатор доволен...
Verhun Kyrylo 23 уровень
24 августа, 09:51
Я так понимаю тут дело в дополнительном потоке на запись. Должен быть 1 поток на запись. Тоже сначала делал так.
Dator 23 уровень, Киев
14 июля, 13:21
Всего эту задачу решили 16570 учеников. Куда отвалились остальные?