O que pode dizer sobre a interface FileFilter?
sobes.tech IA
Resposta da IA
FileFilter é uma interface funcional no pacote java.io, usada para filtrar ficheiros com base em critérios definidos. Possui um método abstrato: boolean accept(File pathname).
Assinatura do método:
// Verifica se o caminho abstrato especificado corresponde ao nome do ficheiro.
boolean accept(File pathname);
O método accept(File pathname) devolve true se o ficheiro ou diretório representado pelo objeto pathname cumprir as condições do filtro, e false caso contrário.
FileFilter é frequentemente usado em métodos que trabalham com listas de ficheiros, tais como:
list(FileFilter filter)na classeFile.listFiles(FileFilter filter)na classeFile.
Exemplo de uso para filtrar apenas ficheiros (excluindo diretórios):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Diretório atual
// Criar um FileFilter para aceitar apenas ficheiros
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Retorna true se for um ficheiro
}
};
// Usar o filtro para obter a lista de ficheiros
File[] ficheiros = dir.listFiles(onlyFilesFilter);
if (ficheiros != null) {
for (File ficheiro : ficheiros) {
System.out.println(ficheiro.getName());
}
}
}
}
Uso de expressões lambda (disponível desde Java 8, uma vez que FileFilter é uma interface funcional):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Diretório atual
// Usar expressão lambda como FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtro para diretórios
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter permite criar critérios de filtragem reutilizáveis para trabalhar com o sistema de ficheiros.