у меня программа имеет следущий вывод
который не соответствует действительности по факту там и это
второй вопрос это я так понимаю это бок со счетчиком, поправить можно легко конечно просто инициализировать их с -1. Но хочется понять как оно их считает.
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;
/*
Что внутри папки?
*/
public class Solution {
private String fileName;
private Path path;
private int fileCount;
private int folderCount;
private int DirectorySize;
public Solution(String fileName) {
this.fileName = fileName;
this.path = Paths.get(fileName);
}
public void IsDirectory_ScanDirectory() throws IOException {
if (!Files.isDirectory(this.path)) {
ErrorMassage();
} else {
SimpleFileVisitor<Path> fileVisitor = new SimpleFileVisitor<>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
folderCount++;
return super.preVisitDirectory(dir, attrs);
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
int fileSize = Files.readAllBytes(file).length;
fileCount++;
DirectorySize += fileSize;
return super.visitFile(file, attrs);
}
};
Files.walkFileTree(this.path, fileVisitor);
}
}
private void ErrorMassage() {
System.out.println(this.fileName + "- не папка");
}
@Override
public String toString() {
return "Всего папок - " + this.folderCount
+ "\nВсего файлов - " + this.fileCount
+ "\nОбщий размер - " + this.DirectorySize;
}
public static void main(String[] args) throws IOException {
Solution solution = null;
try (InputStreamReader inputStreamReader = new InputStreamReader(System.in)
;BufferedReader reader = new BufferedReader(inputStreamReader)) {
solution = new Solution(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
solution.IsDirectory_ScanDirectory();
System.out.println(solution);
}
}