По идее, все довольно логично: сначала проверка на указание минимального и максимального значения. Если они указаны, то проверяется, больше ли размер файле, чем минимум, и меньше ли, чем максимум. Если да - добавление в список и возвращение.
Если минимальное и максимальное не указано одновременно, то, возможно, указано какое-то одно. Потому далее проверка сначала на минимальное, а потом на максимальное (порядок роль не играет). Тоже проверяется, если указан минимум, что файл больше минимума, а если максимум, то то, что он меньше максимума. И в обоих случаях добавляет файл и выходит из метода.
Далее проверка, указано ли имя, по которому нужно искать. Если указано, то ищем внутри имени файла совпадение на строку для поиска. Есть совпадение: добавление в список, возврат из метода.
Далее проверка, указана ли строка для поиска внутри содержимого файла. Если указана, то считываем содержимое файла и ищем в нем совпадение на строку для поиска. Есть совпадение: добавление в список и возврат из метода.
Собственно, вопрос: где логика-то нарушена? Независимо от набора входных критериев, оно всегда (по идее) должно правильно обрабатывать файлы. Просто если критерий есть - оно по нему ищет, критерия нет - не ищет. Помогите разобраться, что не нравится валидатору, подсказок от ментора не последовало :))
package com.javarush.task.task31.task3111;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
/*
Продвинутый поиск файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
SearchFileVisitor searchFileVisitor = new SearchFileVisitor();
searchFileVisitor.setPartOfName("name");
searchFileVisitor.setPartOfContent("Test");
searchFileVisitor.setMinSize(1);
searchFileVisitor.setMaxSize(10000);
Files.walkFileTree(Paths.get("D:/test/"), searchFileVisitor);
List<Path> foundFiles = searchFileVisitor.getFoundFiles();
for (Path file : foundFiles) {
System.out.println(file);
}
}
}