ho "risolto" (se così si può dire) modificando il metodo scanDir:
codice:
public ArrayList<Record> scanDir(Path directory) throws IOException {
ArrayList<Record> list = new ArrayList<>();
Files.walkFileTree(directory, new FileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
File f = file.toFile();
String ext = FilenameUtils.getExtension(f.getName());
if (f.isFile() && !ext.equals("aar")) {
Record record = new Record(f.getName(), new Tika().detect(f), f.getAbsolutePath());
list.add(record);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path t, BasicFileAttributes bfa) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path t, IOException ioe) throws IOException {
System.out.println(t.getFileName());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path t, IOException ioe) throws IOException {
return FileVisitResult.CONTINUE;
}
});
return list;
}
usando FileVisitor, e non SimpleFileVisitor, si ha a disposizione il metodo visitFileFailed.
così facendo, il processo continua e riempie cmq la lista.
poi cercherò di capire il perchè di questo errore.