pls. help. делал через Files.walkFileTree() переопределяя метод
visitFile(Path file, BasicFileAttributes attrs) {
if(attrs.isDirectory()){ numDir++; }
этим же подходом кол-во файлов и весь объём в папке - посчитался правильно.
а вот кол-во папок - нет. интересно почему.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.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
/* 1. Метод main должен считывать путь к папке с консоли.
2. Если введенный путь не является директорией - нужно вывести "[полный путь] - не папка" и завершить работу. из пакета java.nio.
4. На консоль должна быть выведена следующая информация: "Всего папок - [количество папок в директории и поддиректориях]".
5. На консоль должна быть выведена следующая информация: "Всего файлов - [количество файлов в директории и поддиректориях]".
6. На консоль должна быть выведена следующая информация: "Общий размер - [общее количество байт, которое хранится в директории]".
*/
public class Solution {
private static int numDir, numFiles;
private static long allBytes;
public static void main(String[] args) throws IOException {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
String st = reader.readLine();
Path path = Paths.get(st);
if(!Files.isDirectory(path)) {System.out.println(st+" - не папка"); return;}
Files.walkFileTree(path,new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if(attrs.isDirectory()){ numDir++;allBytes+=Files.size(file);}
if(attrs.isRegularFile()){ numFiles++;allBytes+=Files.size(file); }
return super.visitFile(file, attrs);
}
});
}
System.out.println("Всего папок - "+numDir);
System.out.println("Всего файлов - "+numFiles);
System.out.println("Общий размер - "+allBytes);
}
}