На консоль должна быть выведена следующая информация: "Всего файлов - [количество файлов в директории и поддиректориях]".
рекомендации от ментора
Исключение системы безопасности JavaRush. Вы выполняете потенциально опасную или запрещенную операцию.
На консоль должна быть выведена следующая информация: "Общий размер - [общее количество байт, которое хранится в директории]".
рекомендации от ментора
Исключение системы безопасности JavaRush. Вы выполняете потенциально опасную или запрещенную операцию.
package com.javarush.task.task31.task3113;
import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
/*
Что внутри папки?
*/
public class Solution {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String dirName = sc.nextLine();
sc.close();
File f = new File(dirName);
if (!f.isDirectory()) {
System.out.println(f.getAbsolutePath() + " - не папка");
}
else {
CounterFileVisitor counterFileVisitor = new CounterFileVisitor();
Files.walkFileTree(Paths.get(dirName), counterFileVisitor);
counterFileVisitor.printFolderCounter();
counterFileVisitor.printFileCounter();
counterFileVisitor.printTotalSize();
}
}
private static class CounterFileVisitor extends SimpleFileVisitor<Path> {
private int folderCounter = -1;
private int fileCounter;
private int totalSize;
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
totalSize += attrs.size();
fileCounter++;
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
folderCounter++;
return FileVisitResult.CONTINUE;
}
public void printFolderCounter() {
System.out.println("Всего папок - " + folderCounter);
}
public void printFileCounter() {
System.out.println("Всего файлов - " + fileCounter);
}
public void printTotalSize() {
System.out.println("Общий размер - " + totalSize);
}
}
}