diff --git a/src/main/java/ru/ulstu/extractor/heuristic/service/DirectoryService.java b/src/main/java/ru/ulstu/extractor/heuristic/service/DirectoryService.java new file mode 100644 index 0000000..6de3c6c --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/service/DirectoryService.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2021 Anton Romanov - All Rights Reserved + * You may use, distribute and modify this code, please write to: romanov73@gmail.com. + */ + +package ru.ulstu.extractor.heuristic.service; + +import com.sun.istack.NotNull; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * Сервис для работы с каталогом файловой системы. Для задач проекта нужно получать список файлов. + */ +@Service +public class DirectoryService { + + /** + * Получить список файлов, рекурсивно обойдя все дерево каталогов проекта. + * + * @param directory корневой каталог + * @return список всех файлов + * @throws IOException при возникновении исключения + */ + public List getFilesRecursively(@NotNull Path directory) throws IOException { + return Files.find(directory, + Integer.MAX_VALUE, + (filePath, fileAttr) -> fileAttr.isRegularFile()) + .map(Path::toFile) + .collect(Collectors.toList()); + } + + /** + * Получить список файлов только текущего каталога + * + * @param directory текущий каталог + * @return список файлов + */ + public List getDirectoryFiles(@NotNull Path directory) { + if (directory.toFile().listFiles() != null) { + return Arrays.asList(Objects.requireNonNull(directory.toFile().listFiles())); + } + return Collections.emptyList(); + } +}