簡體   English   中英

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

[英]Is wildcard searching possible with Apache Commons VFS?

我正在學習Apache Commons VFS。 我想在某個目錄中搜索文件,但是我不知道文件的確切名稱。 但是,我確實知道名稱的一部分。

I can do something like this: 要搜索文件,我我可以做這樣的事情:

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");
}

其中“目錄”是我要查找的目錄的字符串,“文件名”是我要查找的文件的確切文件名。 那應該打印出文件是否存在。

我想知道當我不知道文件的確切名稱時是否可以做類似的事情,但是我確實知道其中的一部分。 例如,如果我知道文件名以“ foo.txt”結尾,是否可以對“ * foo.txt”進行某種通配符搜索?

看看

org.apache.commons.vfs2.FileSelector

您可以找到以下標准實現:

AllFileSelector,FileDepthSelector,FileFilterSelector,FileTypeSelector

FileFilter派生自FileDepthSelector ,它可能是最接近您可以獲取的文件。 您可以使用此代碼來實現自己的基於“通配符”的選擇器。 所有這些選擇器都像過濾器一樣工作。 它們是遍歷文件系統時文件系統管理器的回調。 您的過濾器將決定文件是否在所選內容上。 從FileDepthSelector派生FileFilter的優點是您可以限制所經過的文件系統的目錄深度級別。 總體而言,這是一個不錯的方法,因為您可以實現其他類型的過濾器,例如文件修改時間-但是它們可以提供通配符過濾器,如果您想到(* a * b.doc *)這樣的過濾器,則不容易實現。

我知道這個問題現在有點老了,但是今天我遇到了這個問題,因為我正在實現需要通配符匹配的SFTP集成。 我找到了一個可以執行此操作的Apache實用程序。 SelectorUtils

在實現FileSelector實現的先前答案中,可以將此與建議單獨使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM