Делала через статические примитивные счетчики. Не пускает.
Делала через константы Integer и Long, чтоб тупо значение менялось, а ссылка оставалась прежней. Не пускает.
Решила сделать через финализированные массивы.
Во всех трех вариантах все отлично работает на разных тестовых данных, но валидатор непреклонен.
package com.javarush.task.task31.task3113;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
/*
Что внутри папки?
Затем посчитай и выведи следующую информацию:
Всего папок - [количество папок в директории и поддиректориях]
Всего файлов - [количество файлов в директории и поддиректориях]
Общий размер - [общее количество байт, которое хранится в директории]
Используй только классы и методы из пакета java.nio.
Квадратные скобки [ ] выводить на экран не нужно.
Требования:
1. Метод main должен считывать путь к папке с консоли.
2. Если введенный путь не является директорией - нужно вывести "[полный путь] - не папка" и завершить работу.
3. На консоль должна быть выведена следующая информация: "Всего папок - [количество папок в директории и поддиректориях]".
4. На консоль должна быть выведена следующая информация: "Всего файлов - [количество файлов в директории и поддиректориях]".
5. На консоль должна быть выведена следующая информация: "Общий размер - [общее количество байт, которое хранится в директории]".
C:\Users\Елизавета\Desktop\TestFolder
*/
public class Solution {
public static void main(String[] args) throws IOException {
final int[] filesAndFoldersCount = {0, 0};
final long[] bytesStore = {0};
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String pathString = br.readLine();
Path directory = Paths.get(pathString);
if (!Files.isDirectory(directory)) {
System.out.println(pathString + " - не папка");
br.close();
return;
}
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
public FileVisitResult visitFile(Path path,
BasicFileAttributes fileAttributes) {
filesAndFoldersCount[0]++;
bytesStore[0] += path.toFile().length();
return FileVisitResult.CONTINUE;
}
public FileVisitResult preVisitDirectory(Path path,
BasicFileAttributes fileAttributes) {
if (path.compareTo(directory) != 0) { //через equals тоже не проходит
filesAndFoldersCount[1]++;
return FileVisitResult.CONTINUE;
} else return FileVisitResult.CONTINUE;
}
});
System.out.println("Всего папок - " + filesAndFoldersCount[1]);
System.out.println("Всего файлов - " + filesAndFoldersCount[0]);
System.out.println("Общий размер - " + bytesStore[0]);
}
}package com.javarush.task.task31.task3113;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
/*
Что внутри папки?
Затем посчитай и выведи следующую информацию:
Всего папок - [количество папок в директории и поддиректориях]
Всего файлов - [количество файлов в директории и поддиректориях]
Общий размер - [общее количество байт, которое хранится в директории]
Используй только классы и методы из пакета java.nio.
Квадратные скобки [ ] выводить на экран не нужно.
Требования:
1. Метод main должен считывать путь к папке с консоли.
2. Если введенный путь не является директорией - нужно вывести "[полный путь] - не папка" и завершить работу.
3. На консоль должна быть выведена следующая информация: "Всего папок - [количество папок в директории и поддиректориях]".
4. На консоль должна быть выведена следующая информация: "Всего файлов - [количество файлов в директории и поддиректориях]".
5. На консоль должна быть выведена следующая информация: "Общий размер - [общее количество байт, которое хранится в директории]".
C:\Users\Елизавета\Desktop\TestFolder
*/
public class Solution {
public static void main(String[] args) throws IOException {
final int[] filesAndFoldersCount = {0, 0};
final long[] bytesStore = {0};
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String pathString = br.readLine();
Path directory = Paths.get(pathString);
if (!Files.isDirectory(directory)){
System.out.println(pathString + " - не папка");
br.close();
return;
}
Files.walkFileTree(directory, new SimpleFileVisitor<Path>(){
public FileVisitResult visitFile(Path path,
BasicFileAttributes fileAttributes) {
filesAndFoldersCount[0]++;
bytesStore[0] += path.toFile().length();
return FileVisitResult.CONTINUE;
}
public FileVisitResult preVisitDirectory(Path path,
BasicFileAttributes fileAttributes) {
if (path.compareTo(directory)!=0){ //через equals тоже не проходит
filesAndFoldersCount[1]++;
return FileVisitResult.CONTINUE;
}else return FileVisitResult.CONTINUE;
}
});
System.out.println("Всего папок - " + filesAndFoldersCount[1]);
System.out.println("Всего файлов - " + filesAndFoldersCount[0]);
System.out.println("Общий размер - " + bytesStore[0]);
}
}
/*
class MyFileVisitor extends SimpleFileVisitor {
public FileVisitResult visitFile(Path path,
BasicFileAttributes fileAttributes) {
fileCounter = new Integer(fileCounter.intValue() + 1);
//fileCounter++;
allBytes += path.toFile().length();
return FileVisitResult.CONTINUE;
}
public FileVisitResult preVisitDirectory(Path path,
BasicFileAttributes fileAttributes) {
System.out.println("Directory name:" + path);
return FileVisitResult.CONTINUE;
}
}*/