Сделал через SimpleFileVisitor. Не проходит условие с подсчетом папок. Рекомендация "При подсчете количества папок, изначальную директорию считать не нужно." Направьте на мысль. Вообще не понимаю как это исправить)
package com.javarush.task.task31.task3113;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Stream;
/*
Что внутри папки?
*/
public class Solution {
static int countFiles = 0;
static int countDirs = 0;
static AtomicLong size = new AtomicLong(0);
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Path path = Paths.get(reader.readLine());
if (!Files.isDirectory(path)){
System.out.println(path.toAbsolutePath() + " - не папка");
}
Files.walkFileTree(path,new Visitor(path));
System.out.println("Всего папок - " + countDirs);
System.out.println("Всего файлов - " + countFiles);
System.out.println("Общий размер - " + size);
}
static class Visitor extends SimpleFileVisitor<Path>{
public Visitor(Path path) {
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
if (Files.isDirectory(dir)) countDirs++;
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (Files.isRegularFile(file)) countFiles++;
size.addAndGet(attrs.size());
return FileVisitResult.CONTINUE;
}
}
}