Java Apache Commons VFS是否可以进行通配符搜索?

Java Apache Commons VFS是否可以进行通配符搜索?,java,wildcard,apache-commons,vfs,Java,Wildcard,Apache Commons,Vfs,我正在学习Apache Commons VFS。我想在某个目录中搜索文件,但我不知道文件的确切名称。不过,我知道这个名字的一部分 要搜索文件,我想我可以这样做: FileSystemManager manager = VFS.getManager(); FileObject file = manager.resolveFile(directory + "/" + filename); if (file.exists()) { System.out.println("File found

我正在学习Apache Commons VFS。我想在某个目录中搜索文件,但我不知道文件的确切名称。不过,我知道这个名字的一部分

要搜索文件,我想我可以这样做:

FileSystemManager manager = VFS.getManager();
FileObject file = manager.resolveFile(directory + "/" + filename);

if (file.exists()) {
    System.out.println("File found");
} else {
    System.out.println("File not found");
}
其中“directory”是我要查找的目录字符串,“filename”是我要查找的文件的确切文件名。无论文件是否存在,都应该打印出来

我想知道,如果我不知道文件的确切名称,但我知道其中的一部分,我是否可以做类似的事情。例如,如果我知道文件名以“foo.txt”结尾,我可以对“*foo.txt”进行某种通配符搜索吗

org.apache.commons.vfs2.FileSelector
您可以找到以下标准实现:

AllFileSelector、FileDepthSelector、FileFilterSelector、FileTypeSelector

FileFilter来自FileDepthSelector,它可能是最接近您所能获得的。 您可以使用这个来实现自己的基于“通配符”的sselector。 所有这些选择器都像过滤器一样工作。它们是filesystemmanager在遍历文件系统时的回调。您的筛选器将决定文件是否在所选内容上。 从FileDepthSelector派生FileFilter的优点是,可以限制文件系统的目录深度级别。 总的来说,这是一种很好的方法,因为您可以实现其他类型的过滤器,比如filemodification time,但是如果您想到像(*a*b.doc*)这样的过滤器,它们可能会提供一个通配符过滤器,这是不容易实现的
希望这能有所帮助。

我知道这个问题现在有点老了,但今天我遇到了这个问题,因为我正在实施一个需要通配符匹配的SFTP集成。我发现了一个Apache实用程序,它就是这样做的。

这可以与前面答案中关于实现FileSelector实现的建议一起使用