Como retornar todos os arquivos do file system com caracters curingas como * e?

E aí pessoal, blz ?

Eu implementei a interface FilenameFilter para poder usar com a classe File para poder filtrar somente os arquivos com um determinado padrão no nome.

public boolean accept(File dir, String name) {
	return name.startsWith("th*");
}

O problema é q quando uso o caracter curinga ( * ) o filtro não funciona. E este caracter deve existir. Este é um exemplo pq o padrão é passado como parâmetro e pode vir assim: th?tes* ou tes* ou th???

Já ouvi algo sobre regex, mas não consegui implementar neste contexto.

Podem me ajudar ?

Grande abraço. :smiley:

Os caracteres de expressões regulares são diferentes dos wildcards para arquivos.
Grosseiramente, “.” seria equivalente a “\.” em expressões regulares, “" seria equivalente a ".” em expressões regulares, e “?” seria equivalente a “.?” em expressões regulares.
Por exemplo, “*.java” seria algo como

return name.matches (".*\.java");

(Seria, porque no Windows você pode ter um arquivo com nome “A.JAVA” que não bate com essa expressão. Eu acho (mas não tenho certeza) que seria algo como:

return name.matches ("(?i).*\.java");

Valeu thingol.

Eu criei uma rotina pra substituir os wildchars pelos seus correspondentes nas expressões regulares.

T+