Написал свой код, пытался решать через булевое значение
(если partOfName соответствует названию файла = true, если partOfContent соответствует содержимому файла = true, а также учитывая minSize и maxSize -> добавляем в лист)
в итоге валидатор плевался/ругался, я уже залез в правильное решение и не могу понять почему в данной строке должны написать
!file.getFileName().toString().contains(partOfName))
мы же ищем соответствие между partOfname и названием файла, а перед проверкой пишем оператор отрицания "!", у меня возник диссонанс.
Очень туплю, объясните, пожалуйста. Заранее благодарюpackage com.javarush.task.task31.task3111;
import java.io.IOException;
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 List<Path> foundFiles = new ArrayList<>();
private String partOfName;
private String partOfContent;
private int minSize;
private int maxSize;
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 this.foundFiles;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if(partOfName != null && file.getFileName().toString().contains(partOfName)){
return FileVisitResult.CONTINUE;
}
// размер файла: content.length
byte[] content = Files.readAllBytes(file);
if(partOfContent != null && content.toString().contains(partOfContent)){
return FileVisitResult.CONTINUE;
}
if ((maxSize > 0 && content.length > maxSize) || (minSize > 0 && content.length < minSize))
return FileVisitResult.CONTINUE;
foundFiles.add(file);
return super.visitFile(file, attrs);
}
}