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

Задачи на File

Java Collections
1 уровень , 2 лекция
Открыта

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

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

28
Задача
Java Collections, 1 уровень, 2 лекция
Недоступна
Проход по дереву файлов
1. На вход метода main подаются два параметра. Первый - path - путь к директории, второй - resultFileAbsolutePath - имя (полный путь) существующего файла, который будет содержать результат. 2. Переименовать resultFileAbsolutePath в 'allFilesContent.txt' (используй метод FileUtils.renameFile, и, если понадобится, FileUtils.isExist).
14
Задача
Java Collections, 1 уровень, 2 лекция
Недоступна
Находим все файлы
Реализовать логику метода getFileTree, который должен в директории root найти список всех файлов включая вложенные. Рекурсию не используй. Верни список всех путей к найденным файлам, путь к директориям возвращать не надо. Путь должен быть абсолютный.
28
Задача
Java Collections, 1 уровень, 2 лекция
Недоступна
Продвинутый поиск файлов
Давай реализуем настраиваемый поиск файлов в директории. Просмотри интерфейс java.nio.file.FileVisitor и его базовую реализацию java.nio.file.SimpleFileVisitor. Во время поиска по дереву файлов с помощью метода Files.walkFileTree(Path start, FileVisitor<? super Path> visitor) мы используем объект Fi
Комментарии (250)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
invoker main Уровень 42
11 октября 2025
спс за такие задачи, ничего не решается, просто высасывание денег идет))))) до 30 уровня еще терпимо было, щас же полная пuзда
StaryHroft Уровень 51
7 сентября 2025
Я не понимаю кто те люди, которые знают как решать такие задачи, по-ходу программирование не моя тема, если уже на этом уровне, я больше половины кода не то что не написал, а даже не понял его в правильном ответе О_о
invoker main Уровень 42
11 октября 2025
ты сам прошел до 51 уровня? за месяц с 30? воу
Rustam Уровень 23
7 марта 2025
По первой задаче странно конечно... Класс назвали GetFiles - это норм? Я думал класс это описание какого то объекта...
{Java_Shark} Уровень 36
10 января 2025
А есть здесь кто-нибудь, кто сам решил эти задачи? не обращаясь к ответам?)))
Andrey Уровень 34
17 марта 2025
Ну да, про это насколько помню не рассказывали. Пришлось загуглить, прилепить найденное и отправить. Ну там если совсем в хордкор охота нужно смотреть про рекурсивный обход дерева файлов (и писать обход самому), ну чего-то лениво Готовые решения попроще типа

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 ..задачка явно должна быть в другом месте
Денис Кокшаров Уровень 1
27 марта 2025
++Java_Shark я был этим человеком. зато скипнул весь уровень почти с сериализацией бесячей и бесполезной.
Anonymous #3504327 Уровень 51
3 июня 2025
решил 1-ю сложную только после подсказки ,что в переданной директории могут быть не только файлы. решение прошло через рекурсивный метод,который в List<byte[]> собирает все прочитанные файлы, и потом все это записывает с проверкой на длину массива не больше 50. А так да, без подглядывания не решил бы, просто впадлу было использовать именно готовое решение. Так же не погнял зачем между записями новых файло добавлять символ новой строки. короче тяжело ппц.
Никита Онучин Уровень 32
9 октября 2024
Перед тем как решать 3-ю задачу рекомендую прочитать статью - Разбор утилиты Files.walkFileTree() Мне показалось, что автор задачи и статьи - один человек 😁
Anonymous #3429554 Уровень 40
7 октября 2024
Почему в лекции дают одно, а по факту необходимо использовать совсем другое, с такой логикой я и сам могу учиться всему, а не использовать JavaRush
Никита Онучин Уровень 32
9 октября 2024
По факту весь написанный код реально повторяет пройденную лекцию. В третьей задаче чуть нужно разобраться в коде внутри которого находишься, но сам код строго по лекции. А разбираться в чужом коде на работе придется постоянно. Так что привыкаем на обучении) Успехов!
Rustam Уровень 23
7 марта 2025
Это неправда
Anonymous #3268884 Уровень 24
31 августа 2024
Метод Files.walkFileTree() - это статический метод у класса Files, который предназначен для того, чтобы пройти по какой-то папке, заглянуть внутрь вложенных папок на несколько уровней, найти в них файлы с нужным нам содержимым, и совершить с этими файлами какие-то действия. Синтаксис у метода довольно громоздкий и требует использования нескольких дополнительных классов. То есть перед тем, как запускать метод, требуется создать еще парочку дополнительных объектов, которые будем передавать методу в качестве аргументов. Всего у этого метода четыре аргумента. Первый аргумент задает ту папку, которую будем исследовать. Это обычный объект Path. Второй аргумент определяет, будет ли метод проходить по ссылкам и просматривать то, что там содержится. Данный аргумент как раз является объектом дополнительного класса, этот класс нужно импортировать, а объект нужно предварительно создать перед запуском метода. Третий аргумент задает, на сколько уровней вглубь метод будет проходить вложенные подпапки. Тут никаких сложностей, это обычное число int. Четвертый аргумент задает те самые действия, которые будут применяться ко всем файлам в дереве. Вот тут все через жо... в смысле сложновато. Эти действия прописываются в отдельном методе visitFile(), который находится в еще одном дополнительном классе - SimpleFileVisitor, а объект этого класса и будет четвертым аргументом.
Anonymous #3268884 Уровень 24
31 августа 2024
Упомянутый SimpleFileVisitor - это класс-потомок интерфейса FileVisitor, в котором описаны все методы для обхода дерева файлов. Помимо метода visitFile(), в котором прописываются все нужные действия, применяемые к каждому файлу в дереве, там есть еще парочка методов. В них можно вписать, что делать при входе в каждую подпапку, что делать, если папка не найдена, и еще всякие мелочи. Работает это так. Метод Files.walkFileTree() проходит вдоль изучаемой папки и для каждого файла в ней и в ее вложенных папках вызывает метод visitFile(). Этот метод делает то, что мы в нем напишем, а потом возвращает объект еще одного класса - FileVisitResult. В зависимости от этого возвращенного значения метод Files.walkFileTree() либо вызывает метод visitFile() для следующего файла, либо завершает работу. Ну а теперь давайте уже сделаем все так, как у нас тут любят - подробно по пунктам опишем весь порядок действий. Подробный порядок действий ----------------------------------------------------------
Anonymous #3268884 Уровень 24
31 августа 2024
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 Уровень 51
8 сентября 2024
большое вам спасибо!
Anonymous #3268884 Уровень 24
8 сентября 2024
рад, что пригодилось))
Andrew Martelis Уровень 36
26 июля 2024
Если вы вспотели здесь, знайте , вы не одни
komandor1 Уровень 48
29 июня 2024
Найс, в первой задачке засчитало пункт "Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt.", но не засчитало пункт "Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt."
Private Joker Уровень 36
6 июня 2024
скипнул