Не принимает решение, помогите найти причину.
Задачу поиска содержимого в файле решил написать на более низком уровне.
package com.javarush.task.task31.task3111;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
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.Arrays;
import java.util.List;
public class SearchFileVisitor extends SimpleFileVisitor<Path> {
boolean findSubArr(byte[] arr, byte[] subarr) {
int lim = arr.length - subarr.length;
byte[] tmpArr = new byte[subarr.length];
for (int i = 0; i <= lim; i++) {
if (arr[i] == subarr[0]) {
System.arraycopy(arr, i, tmpArr, 0, subarr.length);
if (Arrays.equals(tmpArr, subarr)) {
return true;
}
}
}
return false;
}
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;
}
private String partOfName;
private String partOfContent;
private int minSize;
private int maxSize;
private List<Path> foundFiles = new ArrayList<>();
public List<Path> getFoundFiles() {
return foundFiles;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
byte[] content = Files.readAllBytes(file); // размер файла: content.length
if (partOfName == null)
partOfName = "";
if (partOfContent == null)
partOfContent = "";
if (maxSize == 0)
maxSize = Integer.MAX_VALUE;
if (file.getFileName().toString().matches("(.*)" + partOfName + "(.*)")
&& findSubArr(content, partOfContent.getBytes())
&& content.length <= maxSize
&& content.length >= minSize) {
foundFiles.add(file);
}
return super.visitFile(file, attrs);
}
}