Что внутри папки?

  • 28
  • Недоступна
Напиши программу, которая будет считать подробную информацию о папке и выводить ее на консоль. Первым делом считай путь к папке с консоли. Если введенный путь не является директорией - выведи "[полный путь] - не папка" и заверши работу. Затем посчитай и выведи следующую информацию: Всего папок - [
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (283)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
Уровень 35, Минск, Беларусь
18 декабря 2021, 16:59
Files.walkFileTree(path, new FileVisitor<Path>() {
тут автоматически Idea подтянет @Override четырех методов,
в двух из которых нужно реализовать логику задачи,
предварительно создав в классе нужные поля.
}
Вот и вся задача... 🧐
LuneFox богатый программист в далёких мечтах Expert
15 декабря 2021, 13:47
Из-за того, что размер файлов я смотрел, не вызывая метод у attrs, валидатор браковал мне всё решение красными крестами, хотя даже при таком вычислении работает правильно:
totalSize.addAndGet(file.toFile().length());
И ещё я не совсем понял, почему в Windows слэш влияет на вывод:
D:\
Всего папок - 5797
Всего файлов - 306070
Общий размер - 390027779895

Process finished with exit code 0
(Для D:/ такой же результат), но
D:
Всего папок - 130
Всего файлов - 491
Общий размер - 219290947

Process finished with exit code 0
В последнем случае алгоритм выибирал только одну папку на диске D, когда в первом случае шерстил все папки на диске.
imik
Уровень 35, Ufa
10 декабря 2021, 15:32
5 минут гугления выдали классный метод Files.newDirectoryStream(path). Задача нормально решается через рекурсию (вынес основную логику в отдельный статический метод) , в отличие от многих задач тут ВАЛЛИ дружелюбно отнёсся к статическим переменным для подсчёта значений. P.S. FileWalk чой-то вообще не зашёл, хоть и статью эту на хабре два раза читал...
Максим Дудин
Уровень 33, Калининград
8 декабря 2021, 18:00
не назвал бы эту задачу hard'ом с medium'ами зачастую возился дольше.. 1. нормально проходит и без atomic.AtomicInteger и atomic.AtomicLong 2. "количество папок в директории и поддиректориях" - значит, что текущую папку считать не нужно,( а по умолчанию она посчитается) я просто сделал -1 при выводе в консоль 3. отдельно бежим по файлам FileVisitResult visitFile, отдельно по директориям FileVisitResult postVisitDirectory 4. считать байты что так: nuberOfBytes+=Files.size(file), что так nuberOfBytes+=Files.readAllBytes(file).length - результат один и тот же (проверку проходил с первым вариантом) 5. проверка на то что путь - директория проводим до того как организуем пробег по дереву ( наверное это всем очевидно, но на всякий) 6. ну и .... что бы не попадать из-за лишнего/отсутствующего пробела в тексте вывода, хорошая традиция скопировать его из условия
Stepan
Уровень 25, Москва, Россия
30 ноября 2021, 20:36
Внимание! Обязательно надо использовать то, что дают в импорте: import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; Я сделал без их использования, но валидатор даже не пытался проверять - "Неизвестная ошибка при проверке...". 5 попыток. Подсмотрел на правильное решение и хочу сказать, что мне не ясна целесообразность применения incrementAndGet, addAndGet без упоминания в условиях задачи. Мы ведь в одном потоке выполняем программу (интересно, будет ли прирост при нескольких потоках и за счет чего). Вот если бы задание включало в себя использование несколько потоков, то да, использование атомарных операций было бы уместным. Кто расскажем, тот молодец :)
Dmitry Noskov
Уровень 49, Москва, Russian Federation
4 декабря 2021, 18:49
не использовал атомики, валидатор принял
Alexa
Уровень 33, Haifa, Израиль
13 ноября 2021, 18:26
13 попыток понять что не так в выведи "[полный путь] - не папка"....пробел...просто пробел
2DaMoon
Уровень 41
13 октября 2021, 12:24
После Трегулова - детский сад
Ефремов Евгений Витальевич тестировщик в Reksoft
7 октября 2021, 17:29
Какого лешего в "правильном решении" есть AtomicInteger, если о нем слова не было в лекциях?
Yarik Таксист в Яндекс.Такси
7 ноября 2021, 05:01
У меня принял без Atomic
Max Zap
Уровень 41
21 сентября 2021, 15:17
Почему то последняя задача с плашкой "hard" легче предыдущих медиумов. Через Files.walkFileTree со своим SimpleFileVisitor, в visitFile считаем файлы, attrs.size() - размер файла. Главное не делать file.toFile() - не проходит по условию.
Yarik Таксист в Яндекс.Такси
7 ноября 2021, 05:02
Потому что самое сложное это выставить правильное количество пробелов а не в коде разбираться. ))
Дмитрий Б.
Уровень 29, Благовещенск, Россия
14 сентября 2021, 06:54
Задачки легкие, но Валя с его "ни о чем не говорящими" подсказками, это конечно жжесть.