Подскажите с какой стороны попробовать подойти к этому валидатору))
Сначала решил через files.walk + filter + collect признаюсь подсмотрел но решение очень компактное и красивое. Не принимало, почитал коменты подумал может ругается на импорт стримов и коллектион.
Сейчас выдает ошибку по всем (!) пунктам кроме первого, то есть даже проверку на не директорию не проходит. Подскажите что не так делаю? по моим тестам проходит вроде, единственное не совсем понял в поддиректориях надо считать размер байтов или нет (про них ничего не указана, но сама поддиректория ведь имеет весь значит по идее надо)
package com.javarush.task.task31.task3113;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
/*
Что внутри папки?
*/
public class Solution {
static int x = 0;
static int countFolders = 0;
static int countFiles = 0;
public static void main(String[] args) throws IOException {
Scanner reader = new Scanner(System.in);
String pathString = reader.nextLine();
reader.close();
Path pathToDir = Paths.get(pathString);
if(!pathToDir.toFile().isDirectory()){
System.out.println(pathToDir.toAbsolutePath() + " - не папка");
}else {
Files.walkFileTree(pathToDir, new FileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
if (dir.toFile().isDirectory()) {
countFolders++;
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (file.toFile().isFile()) {
countFiles++;
}
Solution.x += file.toFile().length();
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
System.out.println("Количество папок - " + (countFolders - 1));
System.out.println("Количество файлов - " + (countFiles));
System.out.println("Общий размер - " + x);
}
}
}