1. ホーム
  2. java

[解決済み] Javaでワイルドカード文字列に一致するファイルを検索する方法は?

2022-04-21 14:29:31

質問

これは本当に簡単なことです。もし私がこのようなStringを持っているとしたら。

../Test?/sample*.txt

では、このパターンにマッチするファイルのリストを取得する一般的に受け入れられている方法は何でしょうか?(例: それは ../Test1/sample22b.txt../Test4/sample-spiffy.txt でなく ../Test3/sample2.blah または ../Test44/sample2.txt )

を見てみました。 org.apache.commons.io.filefilter.WildcardFileFilter で、それは正しい獣のようですが、相対的なディレクトリパスでファイルを見つけるためにそれをどのように使用するかがわかりません。

Antはワイルドカード構文を使用するので、ソースを見ることができると思いますが、私はここでかなり明白な何かを見逃しているに違いありません。

( 編集 上の例はあくまでサンプルです。私は、ワイルドカードを含む一般的なパスを実行時にパースする方法を探しています。mmyersの提案に基づいてその方法を考え出したのですが、ちょっと迷惑な話です。言うまでもなく、Java JREは、私の時間と手間を省くために、単一の引数からmain(String[] arguments)で単純なワイルドカードを自動パースするようです...。ファイル以外の引数が混じってないだけマシか(笑)。

解決方法は?

Apache AntのDirectoryScannerを検討してください。

DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"**/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();

ant.jarを参照する必要があります(ant 1.7.1の場合、~1.3MB)。