Собираем файл

  • 10
  • Недоступна
Собираем файл из кусочков. Считывать с консоли имена файлов. Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37. Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end". В папке, где находятся все прочтенные файлы, создать фа
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (226)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Дмитрий19 уровень
позавчера, 17:22
Интересная задача. Решал долго.
split(".")
так делать нельзя
Игорь18 уровень
позавчера, 16:09
задача огонь ))) из костылей использовал супер условие)))
if (list.get(0).toCharArray()[i] == '.' && list.get(0).toCharArray()[i+1] == 'p'&&list.get(0).toCharArray()[i + 2] == 'a'
                   && list.get(0).toCharArray()[i + 3] == 'r'&&list.get(0).toCharArray()[i + 4] == 't')
а еще написал свой компаратор)))
Василий20 уровень, Киев
13 ноября, 19:48
2 попытки, 23 строчки кода в main и пару часов изучения regex и отсортированных словарей
DancingShaman20 уровень
7 ноября, 21:04
Очередная неадкватная задача. Если сортировать файлы через Collections.sort, то всё работает, хотя этот метод некорректно сортирует, но если получать номер файла через регулярное выражение, потом добавлять файлы в TreeMap, где ключ - порядковый номер файла, а значение - полное имя файла, что гарантирует правильный порядок, то валидацию пройти невозможно. Вывод: это промах разработчиков.
Vadim Krant19 уровень, Москва
3 ноября, 20:13
Звучит вроде просто условие, но задача на самом деле лютая, потратил на неё целый день (правда с перерывами). Сдал со второго раза (почему ? Ответ ниже!) Сделал 4 процедуры. 1. чтение файла 2. запись файла 3. парсер номера файла 4. парсер итого файла Сортировка автоматическая через TreeSet, всё красиво, читаем фаил через readLine(), каждую строчку затыкаем спецсимиволом переноса строки ("\n") для сохранения структуру файла старого в новом! Выходной файл красивый, всё на своих местах. красота. Валидация, болт, не прошел пункт: В новый файл перепиши все байты из файлов-частей *.partN. Как думаете, какой символ был лишнем ? Правильно, та подтычка для переноса строки! И пофигу что форматированный файл по строкам на входе, превращается в кашу в конечном файле. Валидатор, чо. План решения. Сортировка - три сэт разбить путь на куски, номер файла и итоговый фаил. 73 строчки кода. И да, нас всё меньше, 8700 решивших.
Alex P23 уровень
13 ноября, 10:04
I agree with you that the task was a lot complex. I used HashSet... anyway... passed it through 2 attempts because of "statics" and non-closed IO threads. God Dammit... fuck it!
Михаил20 уровень, Санкт-Петербург
28 сентября, 12:21
Спасибо Philip J.40 уровень, Днепр за отличное объяснение! Использовал это и в компараторе Collections.sort(ArrayList, Comparator).
Александр Толкачёв22 уровень, Санкт-Петербург
21 сентября, 15:18
Не проходит
FileInputStream fis = new FileInputStream(filename);
Проходит
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filename));
Дальнейшая реализация абсолютно одинаковая, но первый вариант валидатор не хочет принимать, т.к. в условии написано про буфер. бред
Александр Толкачёв22 уровень, Санкт-Петербург
21 сентября, 15:21
единственное что я могу сказать в защиту валидатора - BufferedInputStream работает в разы быстрее из за того самого буфера
Дмитрий18 уровень, Санкт-Петербург
8 октября, 17:40
Пункт 4 ТЗ: Чтение и запись должны происходить с использованием буфера. Требования строго прописаны, чему тут удивляться? Задача в том числе учит использовать буфер, т.к. в разы вырастает производительность чтения/записи.
Yuriy22 уровень, Новосибирск
17 сентября, 08:32
Тут внизу писали, что сортировку через TreeSet валидатор не принимает. У меня принял . А вот через Collection.sort(ListArray) не принимал.
Dmitry19 уровень
21 сентября, 11:56
у меня принял через Collections.sort(array);
Андрей19 уровень, Москва
15 августа, 13:29
Полдня сидел над задачей, потом додумался про использование TreeMap. В итоге с 3 раза, т.к. имя файла для записи оказалось нужно получить обрезанием, а не просто написать самому в коде.
Yurii Koval31 уровень
13 августа, 23:17
Метод matches() у стринга работает не так как нужно. Java, stringObject.matches(), WTF????