|
|
@ -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();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|