2015-05-06 11 views
9

Mi piacerebbe trovare un file in una directory utilizzando il carattere jolly. Ho questo in Java 6, ma voglio convertire il codice a Java 7 NIO:Java Elenco elenco 7 nio con carattere jolly

File dir = new File(mydir); 
FileFilter fileFilter = new WildcardFileFilter(identifier+".*"); 
File[] files = dir.listFiles(fileFilter); 

Non c'è WildcardFileFilter, e ho giocato un po 'con gocce.

+1

Avere hai letto [Ricerca di file] (https://docs.oracle.com/javase/tutorial/essential/io/find.html)? –

+0

Vedere http://stackoverflow.com/questions/20443793/allow-wildcards-to-search-for-subdirectories-from-a-parent-directory. Dovrebbe aiutarti a costruire il codice giusto per questo. – wsl

risposta

9

è possibile passare un glob a un DirectoryStream

import java.nio.file.DirectoryStream; 
import java.nio.file.FileSystems; 
import java.nio.file.Files; 
import java.nio.file.Path; 
... 

Path dir = FileSystems.getDefault().getPath(filePath); 
DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{txt,doc,pdf,ppt}"); 
for (Path path : stream) { 
    System.out.println(path.getFileName()); 
} 
stream.close(); 
+1

Penso che tu abbia bisogno di un cast no? per (Percorso percorso: (percorso) flusso) { – Jabda

+1

@ Jabda, hai ragione. Questo è ora risolto (DIrectoryStream ... aggiunto). – RealHowTo

4

si potrebbe usare un directory stream con glob come:

DirectoryStream<Path> stream = Files.newDirectoryStream(dir, identifier+".*") 

e poi iterare i percorsi dei file:

for (Path entry: stream) { 
}