/
Zakonreal
/
practice06
Обзор
Документация
Войти
/
Zakonreal
/
practice06
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/analizer/DirectoryAnalyzer.java
67 строк
2 KB
RodinRoman
init
15 май 2025, 03:23
15 май 2025, 03:23
17d6e58
Код
Авторство
О чём код?
package analizer; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.stream.Stream; public class DirectoryAnalyzer { private final Path dir; private final DirectoryStatistics statistics; public DirectoryAnalyzer(Path dir) { if (!Files.exists(dir)) { throw new IllegalArgumentException("Directory path " + dir + " doesn't exists"); } if (!Files.isDirectory(dir)) { throw new IllegalArgumentException("Path " + dir + " is not a directory"); } this.dir = dir; statistics = new DirectoryStatistics(dir.getFileName().toString(), dir.toAbsolutePath().toString()); } public void analyze() { try (Stream<Path> files = Files.walk(dir)) { files.filter( path -> !Files.isDirectory(path) ).forEach( path -> { String fileName = path.getFileName().toString(); String extension = getExtension(fileName); statistics.getFiles().putIfAbsent(extension, new ArrayList<>()); statistics.getFiles().get(extension).add(fileName); } ); } catch (IOException e) { throw new RuntimeException("Failed to analyze dir = " + dir, e); } } private String getExtension(String fileName) { String extension = ""; int tmp = fileName.lastIndexOf('.'); if (tmp > 0) { extension = fileName.substring(tmp + 1); } return extension.isEmpty() ? "undefined" : extension; } public void getStatistics() { System.out.println("Directory name: " + statistics.getDirectoryName()); System.out.println("Directory path: " + statistics.getPath()); for (String extension: statistics.getFiles().keySet()) { System.out.println("extension: " + extension); for (String file: statistics.getFiles().get(extension)) { System.out.println(" - " + file); } } } }