问题
I'd like to find a file in a directory using wildcard. I have this in Java 6 but want to convert the code to Java 7 NIO:
File dir = new File(mydir);
FileFilter fileFilter = new WildcardFileFilter(identifier+".*");
File[] files = dir.listFiles(fileFilter);
There is no WildcardFileFilter
, and I've played around a bit with globs.
回答1:
You can pass a glob to a 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();
回答2:
You could use a directory stream with a glob like:
DirectoryStream<Path> stream = Files.newDirectoryStream(dir, identifier+".*")
and then iterate the file paths:
for (Path entry: stream) {
}
来源:https://stackoverflow.com/questions/30088245/java-7-nio-list-directory-with-wildcard