Считать с консоли 2 имени файла.
В начало первого файла записать содержимое второго файла так, чтобы получилось объединение файлов.
Закрыть потоки.
Объединение файлов
- 10
Недоступна
Комментарии (338)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
SRS4545Expert
1 июня, 01:31
Изгольнулся через временный файл прикола ради, но валидатор не принимает такое ресурсное решение, если что.
0
Paul
18 апреля, 12:31
Получил из обоих файлов строки => записал их в файл в обратном порядке. Использовал класс PrintWriter и его метод append().
0
Murat
15 апреля, 10:45
Решил с первого раза, но не заметил условие, что можно создать только один поток для записи в файл1. Посмотрел решение, увидел ByteArrayOutputStream, вспомнил о нём и появилось ощущение, что где-то на этом уровне нам о нём рассказывали. Не могу найти ту лекцию/статью. Подскажите пожалуйста, где раскрывалась эта тема? (Поиск по сайту не дал нужного результата)
0
Alexander Minaev
7 апреля, 17:38
вспомните про byteArrayOutStream. Он облегчит все в 2 раза и не создавайте в try() поток записи со всеми потоками, а создавайте отдельно, когда надо будет именно записывать данные, после считывания файла(-ов). Я не особо понял, почему так он записывает как надо, а если прописать в самих скобках он не записывает обе строки. В правильных ответах вообще 2 try(), а почему так пояснений нет или я не заметил..
0
Виктор
9 апреля, 19:44
Предполагаю что из-за того что потоки чтения открыты, поток записи не может записать в файл. А если поток записи открывать после того как закрыты чтения, то файл "свободен", и запись проходит. Но не уверен. Проверять лень.
0
very junior java developer www.codewars.com/r/TTH6EQ
23 марта, 15:14
Могут возникнуть сложности с валидатором.
Вот пример
1 файл:
2й файл:
вам может подуматься что в итоге в 1м файле должно быть так:
Но важно понимать что во втором файле после HelloWorld байта перевода каретки не было, а следовательно валидатор ожидает:
0
Andrei Malahovski
23 апреля, 16:58
Не вводите заблуждение! Валидатор принимает именно с учетом перехода каретки.
0
very junior java developer www.codewars.com/r/TTH6EQ
24 апреля, 11:57
Если бы в первом файле было так:
а во втором вот так:
тогда итоговый файл должен был бы выглядеть вот так:
я имел и имею ввиду что все байты из обоих файлов переносятся как есть, и если символа \n или \r не было в исходном файле его не должен быть и в итоговом.... 0
SergeyExpert
19 марта, 08:01
1-й файл в 1-й ArrayList<String>, 2-й файл во 2-й ArrayList<String>. Потом с помощью Collections добавляем 1й список в конец 2го списка и одним потоком записываем полученный список в первый файл
0
Антон
31 марта, 12:46
Я скопировал первый файл в байтовый буфер в виде массива, размером input.available(), закрыл поток чтения и открыл поток записи, куда и слил второй файл + буфер сразу одним куском. Экономия памяти ровно в размер второго файла :)
0
Виктор
9 апреля, 19:41
зачем создавать два списка и затем объединять? Просто в один список запихнуть содержимое файлов, только сначала 2й, потом 1й.
0
Екатерина Екатериновна
15 марта, 18:17
Валидатору не нравится readAllBytes() а с ним так легко и просто.
+2
YuriSt
7 марта, 15:13
- Считал первый файл в ArrayList<String>,
- Записал все строки второго в первый файл,
- Дописал ArrayList<String> в первый файл
Всё отлично работает!
... но валидатор ругался
По совету "Pavel V." убрал перевод строк "\n" и
валидатор согласился, но в файле всё в одну строку!?
0
Антон
31 марта, 12:50
Вместо ArrayList можно было бы использовать byte[availavle]. Методы потоков принимают такой тип напрямую. Удобно)
0
Лебовски
20 февраля, 15:07
Оу круто, то что мы делаем уже похоже на "программы" которые могут что то самостоятельно делать)))
Мне НРАИЦА)
0
Кирилл
19 февраля, 12:59
Блин, да что за жесть то!!! С 17 раза. Уже которую задачу подряд. Станет когда-то полегче?))))
+1
LukasKeyn
30 марта, 11:38
да после CRUD - это легкие задачи. Особенно, если решаешь все подряд.В предыдущей задаче было решение этой фактически - научили команде output.write(input.read()) и дали понимание, как работает OutputStream( я просто посимвольно считывал до того, как в правильном решении увидел такую команду) Пока он не закрыт в него все пишется, не удаляя предыдущее. Здесь единственная сложность была в том, что OutputStream нужно создавать после операций с 1 файлом( Я все в лист добавил). Потом поработал со вторым файлом. А потом из листа добавил данные в OutputStream.
0