2015-05-06 24 views
9

Chciałbym znaleźć plik w katalogu za pomocą symbolu wieloznacznego. Mam to w Javie 6, ale chcesz przekonwertować kodu Java 7 NIO:Java 7 katalog listy z dziką kartą

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

Nie ma WildcardFileFilter i Grałem około trochę z globs.

+1

Have czytasz [Finding Files] (https://docs.oracle.com/javase/tutorial/essential/io/find.html)? –

+0

Zobacz http://stackoverflow.com/questions/20443793/allow-wildcards-to-search-for-subdirectories-from-a-parent-directory. Powinien pomóc ci w stworzeniu odpowiedniego kodu. – wsl

Odpowiedz

9

można przekazać glob do 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

Myślę, że potrzebujesz obsady nie? for (Ścieżka ścieżki: (ścieżka) strumień { – Jabda

+1

@Jabda, masz rację. Zostało to naprawione (dodano DIrectoryStream ...). – RealHowTo

4

Można użyć directory stream z glob jak:

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

a następnie iteracyjne ścieżkach plików:

for (Path entry: stream) { 
}