#12 -- Add directory service

This commit is contained in:
Anton Romanov 2021-03-30 15:23:22 +04:00
parent 117315024e
commit c5e1ad8f37

View File

@ -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<File> 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<File> getDirectoryFiles(@NotNull Path directory) {
if (directory.toFile().listFiles() != null) {
return Arrays.asList(Objects.requireNonNull(directory.toFile().listFiles()));
}
return Collections.emptyList();
}
}