JavaRush/Курсы/Java Collections/Задачи на File

Задачи на File

Открыта

— Привет, Амиго! Я придумал тебе пару интересных задач.

Решать их можно только в Intellij IDEA. Вот, смотри, какие интересные условия…

28
Задача
Java Collections,  1 уровень,  2 лекция
Недоступна
Проход по дереву файлов
Проход по дереву файлов
14
Задача
Java Collections,  1 уровень,  2 лекция
Недоступна
Находим все файлы
Находим все файлы
28
Задача
Java Collections,  1 уровень,  2 лекция
Недоступна
Продвинутый поиск файлов
Продвинутый поиск файлов
Комментарии (245)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
invoker main
Уровень 42
11 октября 2025, 15:33
спс за такие задачи, ничего не решается, просто высасывание денег идет))))) до 30 уровня еще терпимо было, щас же полная пuзда
StaryHroft
Уровень 51
7 сентября 2025, 14:09
Я не понимаю кто те люди, которые знают как решать такие задачи, по-ходу программирование не моя тема, если уже на этом уровне, я больше половины кода не то что не написал, а даже не понял его в правильном ответе О_о
invoker main
Уровень 42
11 октября 2025, 15:00
ты сам прошел до 51 уровня? за месяц с 30? воу
Rustam Backend Developer
7 марта 2025, 05:42
По первой задаче странно конечно... Класс назвали GetFiles - это норм? Я думал класс это описание какого то объекта...
{Java_Shark}
Уровень 36
10 января 2025, 15:54
А есть здесь кто-нибудь, кто сам решил эти задачи? не обращаясь к ответам?)))
Andrey PyDev
17 марта 2025, 09:15
Ну да, про это насколько помню не рассказывали. Пришлось загуглить, прилепить найденное и отправить. Ну там если совсем в хордкор охота нужно смотреть про рекурсивный обход дерева файлов (и писать обход самому), ну чего-то лениво Готовые решения попроще типа
try (Stream<Path> walk = Files.walk(path)) {
            result = walk.filter(Files::isRegularFile)
                    .map(x -> x.toString())
                    .collect(Collectors.toList());
        }
        return result;
И в авторских решениях идет решение через Files.walkFileTree()..FileVisitor и всякое. Оно описано здесь Java Files, Path ..задачка явно должна быть в другом месте
27 марта 2025, 14:40
++Java_Shark я был этим человеком. зато скипнул весь уровень почти с сериализацией бесячей и бесполезной.
Anonymous #3504327
Уровень 51
3 июня 2025, 12:04
решил 1-ю сложную только после подсказки ,что в переданной директории могут быть не только файлы. решение прошло через рекурсивный метод,который в List<byte[]> собирает все прочитанные файлы, и потом все это записывает с проверкой на длину массива не больше 50. А так да, без подглядывания не решил бы, просто впадлу было использовать именно готовое решение. Так же не погнял зачем между записями новых файло добавлять символ новой строки. короче тяжело ппц.
Никита ОнучинFull Stack Developer в ООО Almond
9 октября 2024, 12:44
Перед тем как решать 3-ю задачу рекомендую прочитать статью - Разбор утилиты Files.walkFileTree() Мне показалось, что автор задачи и статьи - один человек 😁
Anonymous #3429554
Уровень 40
7 октября 2024, 17:18
Почему в лекции дают одно, а по факту необходимо использовать совсем другое, с такой логикой я и сам могу учиться всему, а не использовать JavaRush
Никита ОнучинFull Stack Developer в ООО Almond
9 октября 2024, 12:39
По факту весь написанный код реально повторяет пройденную лекцию. В третьей задаче чуть нужно разобраться в коде внутри которого находишься, но сам код строго по лекции. А разбираться в чужом коде на работе придется постоянно. Так что привыкаем на обучении) Успехов!
Rustam Backend Developer
7 марта 2025, 05:32
Это неправда
Anonymous #3268884
Уровень 24
31 августа 2024, 12:44
Метод Files.walkFileTree() - это статический метод у класса Files, который предназначен для того, чтобы пройти по какой-то папке, заглянуть внутрь вложенных папок на несколько уровней, найти в них файлы с нужным нам содержимым, и совершить с этими файлами какие-то действия. Синтаксис у метода довольно громоздкий и требует использования нескольких дополнительных классов. То есть перед тем, как запускать метод, требуется создать еще парочку дополнительных объектов, которые будем передавать методу в качестве аргументов. Всего у этого метода четыре аргумента. Первый аргумент задает ту папку, которую будем исследовать. Это обычный объект Path. Второй аргумент определяет, будет ли метод проходить по ссылкам и просматривать то, что там содержится. Данный аргумент как раз является объектом дополнительного класса, этот класс нужно импортировать, а объект нужно предварительно создать перед запуском метода. Третий аргумент задает, на сколько уровней вглубь метод будет проходить вложенные подпапки. Тут никаких сложностей, это обычное число int. Четвертый аргумент задает те самые действия, которые будут применяться ко всем файлам в дереве. Вот тут все через жо... в смысле сложновато. Эти действия прописываются в отдельном методе visitFile(), который находится в еще одном дополнительном классе - SimpleFileVisitor, а объект этого класса и будет четвертым аргументом.
Anonymous #3268884
Уровень 24
31 августа 2024, 13:47
Упомянутый SimpleFileVisitor - это класс-потомок интерфейса FileVisitor, в котором описаны все методы для обхода дерева файлов. Помимо метода visitFile(), в котором прописываются все нужные действия, применяемые к каждому файлу в дереве, там есть еще парочка методов. В них можно вписать, что делать при входе в каждую подпапку, что делать, если папка не найдена, и еще всякие мелочи. Работает это так. Метод Files.walkFileTree() проходит вдоль изучаемой папки и для каждого файла в ней и в ее вложенных папках вызывает метод visitFile(). Этот метод делает то, что мы в нем напишем, а потом возвращает объект еще одного класса - FileVisitResult. В зависимости от этого возвращенного значения метод Files.walkFileTree() либо вызывает метод visitFile() для следующего файла, либо завершает работу. Ну а теперь давайте уже сделаем все так, как у нас тут любят - подробно по пунктам опишем весь порядок действий. Подробный порядок действий ----------------------------------------------------------
Anonymous #3268884
Уровень 24
31 августа 2024, 14:00
1. Создаем объект Path с путем к той папке, которую будем исследовать. 2. Создаем объект класса EnumSet<FileVisitOption>. Этот объект может принимать одно из фиксированных значений, заданных enum-перечнем. Выбранное значение определяет поведение в отношении ссылок. Например, если мы хотим при обходе дерева следовать по символьным ссылкам, то данному объекту придаем вот такое значение: EnumSet<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS); 3. Создаем отдельный класс, унаследованный от класса SimpleFileVisitor. 4. В этом классе переопределяем метод visitFile() Более точно он выглядит вот так: public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException Тут мы прописываем все, что нужно делать с каждым файлом или подпапкой, которые содержатся в исследуемой папке. 5. После того, как прописали все необходимые действия, пишем следующее: - либо return FileVisitResult.CONTINUE это если после нахождения нужного файла нужно продолжать обход директории и искать другие файлы, соответствующие поставленному условию - либо return FileVisitResult.TERMINATE это если мы хотим завершить обход после того, как найден хотя бы один файл, соответствующий условию. - либо return FileVisitResult.SKIP_SUBTREE это чтобы продолжать обход без захода в данную папку. 6. Наконец запускаем метод Files.walkFileTree() и передаем ему четыре аргумента: - объект Path с путем к исследуемой папке, - созданный объект EnumSet<FileVisitOption>, - число int, задающее глубину прохода подпапок, - и объект созданного класса-потомка от класса SimpleFileVisitor, в котором лежит метод visitFile()
SomeBody098веник в бане
8 сентября 2024, 08:32
большое вам спасибо!
Anonymous #3268884
Уровень 24
8 сентября 2024, 09:48
рад, что пригодилось))
Andrew Martelis
Уровень 1
26 июля 2024, 11:44
Если вы вспотели здесь, знайте , вы не одни
komandor1
Уровень 48
29 июня 2024, 22:10
Найс, в первой задачке засчитало пункт "Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt.", но не засчитало пункт "Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt."
Private Joker
Уровень 36
6 июня 2024, 13:24
скипнул