Почему по трём пунктам не проходит? Почему проходит по maxSize?
Логика простая - если параметр поиска задан и не подходит - устанавливаем флаг на "ложь", файл не добавляем. Если параметр не задан или соответствует критиериям - флаг на true.Собрали все true - добавили файл. Вообще никаких параметров нет - добавляем все подряд. Почему не работает?
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
byte[] content = Files.readAllBytes(file); // размер файла: content.length
boolean partOfNameBool = partOfName != null;
boolean partOfContentBool = partOfContent != null;
boolean minSizeBool = false;
boolean maxSizeBool = false;
if (minSize>-1) {
minSizeBool = true;
}else System.out.println("Минимальный размер файла не может быть меньше нуля.");
if (maxSize>-1) {
maxSizeBool = true;
}else System.out.println("Максимальный размер файла не может быть меньше нуля.");
boolean flag = true;
if (partOfNameBool && !file.getFileName().toString().contains(partOfName)) {
flag = false;
}
if (partOfContentBool && !content.toString().contains(partOfContent)) {
flag = false;
}
if (minSizeBool && content.length <= minSize) {
flag = false;
}
if (maxSizeBool && content.length >= maxSize) {
// if (!foundFiles.contains(file)) foundFiles.add(file);
flag = false;
}
if (flag && !foundFiles.contains(file)) foundFiles.add(file);
return FileVisitResult.CONTINUE;
}
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("amigo");
searchFileVisitor.setPartOfContent("programmer");
searchFileVisitor.setMinSize(500);
searchFileVisitor.setMaxSize(10000);
//этот метод позволяет пройтись по всему дереву файлов и и выполнить с каждым файлом действия FileVisitor
Files.walkFileTree(Paths.get("D:/SecretFolder"), searchFileVisitor);
List<Path> foundFiles = searchFileVisitor.getFoundFiles();
for (Path file : foundFiles) {
System.out.println(file);
}
}
}