Проход по дереву файлов

  • 11
  • Недоступна
1. На вход метода main подаются два параметра. Первый - path - путь к директории, второй - resultFileAbsolutePath - имя файла, который будет содержать результат. 2. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее: 2.1. Если у файла длина в байтах больше 5
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (159)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
27 января, 09:12
Валли был бесчеловечен...
10 января, 22:05
Не изобретайте велосипед: Если у вас список файлов, не нужно делать никаких своих компараторов Сортируется вот так: Collections.sort(list); класс File реализует интерфейс Comparable, сравнение идет как раз по именам файлов.
Khabibullaev22 уровень
позавчера, 19:24
Гадаю почему у меня в Collection нет метода sort. Оказалось что писал без последней буквы s Collection вместо Collections Кстати, работать метод sort не должен, т. к. имена файлов хранятся вместе с путями.
Ivan22 уровень, Киев
вчера, 12:42
Спасибо тебе, добрый человек.
Ksenia Volkova23 уровень, Москва
10 января, 13:31
Уфф... Кажется, в этой задаче самый абсурдный валидатор. И подсказки ментора - вообще ни о чём. Ругался на 3-й пункт, пока не убрала try-catch блоки.
Vitaly Khan35 уровень
9 января, 03:24
задача действительно очень жестокая с точки зрения валидатора..... заработала легко, но никак не принимало. странно, что не принимало именно первый пункт (валидатор ругался, что я неправильно переименовываю), а проблема оказалась в том, что я вынес метод возвращающий массив нужных файлов в другой класс. т.е. не было никакой связи между советами ментора и тем, в чем проблема. в итоге у меня прошло с использованием PrintWriter. открывал и закрывал поток я всего один раз. получал массив нужных файлов в самом начале программы. (эти пункты в тому, что в комментариях ниже написано, что так не пройдет. у меня прошло) использовал рекурсию, компаратор, Files.readAllLines(...).
Вагиф23 уровень, Санкт-Петербург
2 января, 09:22
не понял задачу, очень сложно для тех кто проходит сразу после Java Core
25 ноября 2018, 07:38
Действительно не принимал с FileUtils.isExist. Убрал проверку, и задача прошла валидацию.
Антон Михайлов28 уровень, Москва
20 ноября 2018, 06:08
Проверка на количество подходящих файлов > 0 оказалась лишней оптимизацией - валидатор требует создание и закрытие потока для записи, даже если мы туда ничего писать не собираемся.
Вячеслав23 уровень
15 ноября 2018, 14:25
Прошел рекурсией по файлам, занес все имена в статический TreeMap Валидатор ругнулся, что нельзя в классе Solution создавать статические переменные Но мы же знаем, как можно угодить валидатору - перенесем нашу переменную в класс FileUtils Done! )))
Rodriguez32 уровень
29 октября 2018, 18:10
Проходим рекурсивно по всем папкам, и собираем в ArrayList<File> файлы согласно условию, затем сортируем через собственный компаратор, затем переименовываем файл и проходим по листу, записывая в него содержимое. Со 2-й попытки, из-за того, что FileOutputStream создавал каждый раз заново в цикле, а его нужно создать лишь один раз сразу после переименования, а в конце закрыть. P.S. Для чего нужны методы deleteFile и isExist, если они не используются?
Borris35 уровень, Москва
15 октября 2018, 21:15
Используйте TreeMap<String, Path> для сортировки
NodeOne37 уровень
25 октября 2018, 19:18
а если будут файлы с одинаковыми именами?
Иван Зубов30 уровень, Москва
12 ноября 2018, 20:29
а в одну и ту же папку разве можно положить 2 файла с одинаковыми именами?
NodeOne37 уровень
13 ноября 2018, 09:52
Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
Евгений24 уровень
22 ноября 2018, 21:14
Использовал TreeSet , но записывал так
files.add(f.getName() + "," + f.getAbsolutePath());
Поэтому не страшны одинаковые имена файлов. При открытии потока разделял
FileInputStream filIn = new FileInputStream(fName.split(",")[1]);
С 3-ей попытки решил. Если б не статическая переменная )))