а если заменить законтированой строкой, то и 7 пункты.
if (!new String(Files.readAllBytes(file)).contains(partOfContent))
isFiltered = false;
на
isFiltered = new String(Files.readAllBytes(file)).contains(partOfContent)
package com.javarush.task.task31.task3111;
import java.io.*;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class SearchFileVisitor extends SimpleFileVisitor<Path> {
private String partOfName;
private String partOfContent;
private int minSize;
private int maxSize;
private List<Path> foundFiles = new ArrayList<>();
public void setPartOfName(String partOfName) {
this.partOfName = partOfName;
}
public void setPartOfContent(String partOfContent) {
this.partOfContent = partOfContent;
}
public void setMinSize(int minSize) {
this.minSize = minSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
public List<Path> getFoundFiles() {
return foundFiles;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
byte[] content = Files.readAllBytes(file); // размер файла: content.length
boolean isFiltered = true;
if (attrs.isDirectory())
return FileVisitResult.CONTINUE;
if (partOfName != null)
isFiltered = file.getFileName().toString().contains(partOfName);
if (partOfContent != null) {
// isFiltered = new String(Files.readAllBytes(file)).contains(partOfContent)
if (!new String(Files.readAllBytes(file)).contains(partOfContent))
isFiltered = false;
}
if (content.length < minSize)
isFiltered = false;
if (content.length > maxSize)
isFiltered = false;
if (isFiltered)
foundFiles.add(file);
return super.visitFile(file, attrs);
}
}
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);
Files.walkFileTree(Paths.get("C:\\Users\\KuRaG\\Desktop\\qqq"), searchFileVisitor);
List<Path> foundFiles = searchFileVisitor.getFoundFiles();
for (Path file : foundFiles) {
System.out.println(file);
}
}
}