How do I solve this problem using Files.walk(path) instead of Files.walkFileTree()?
Why isn't this working?
package com.codegym.task.task31.task3113;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/*
What's in the folder?
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String folderPath = reader.readLine();
reader.close();
Path path = Paths.get(folderPath);
if (!Files.isDirectory(path)) {
System.out.println(folderPath + " is not a folder");
return;
} else {
int foldersCount = 0;
int filesCount = 0;
long fileSize = 0;
List<Path> filesList;
List<Path> folderList;
try (Stream<Path> pathStreams = Files.walk(path)) {
filesList = pathStreams.filter(Files::isRegularFile).collect(Collectors.toList());
folderList = pathStreams.filter(Files::isDirectory).collect(Collectors.toList());
for (int i = 0; i < filesList.size(); i++) {
Path filePath = filesList.get(i);
fileSize = Files.size(filePath);
filesCount++;
}
for (int i = 0; i < folderList.size(); i++) {
foldersCount++;
}
}
System.out.println("Total folders: " + (foldersCount - 1));
System.out.println("Total files: " + filesCount);
System.out.println("Total size: " + fileSize);
}
}
}