ホームページ >Java >&#&チュートリアル >Java でワイルドカード パターンに一致するファイルを効率的に見つけるにはどうすればよいですか?

Java でワイルドカード パターンに一致するファイルを効率的に見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 12:32:10820ブラウズ

How Can I Efficiently Find Files Matching Wildcard Patterns in Java?

Java でのワイルドカード パターンを含むファイルの検索

Java では、特定のワイルドカード パターンに一致するファイルを識別するのは困難な場合があります。この課題に取り組むには、次のアプローチを検討してください。

org.apache.commons.io.filefilter.WildcardFileFilter を使用する

  • FileFilter インスタンスを作成するを使用してWildcardFileFilter:

    FileFilter fileFilter = new WildcardFileFilter("sample*.txt");
  • 一致するファイルをリストするディレクトリにフィルターを適用します:

    File dir = new File(".");
    File[] files = dir.listFiles(fileFilter);

相対パスの処理

相対パスを考慮するためディレクトリ:

  • サブディレクトリを反復処理:

    FileFilter dirFilter = new WildcardFileFilter("Test*");
    File[] subdirs = new File(".").listFiles(dirFilter);
    for (File subdir : subdirs) {
      if (subdir.isDirectory()) {
        File[] files = subdir.listFiles(fileFilter);
      }
    }
  • を使用再帰:

    File current = ...; // start at any directory
    File[] files = new ArrayList<>();
    processFiles(files, current, fileFilter);
    
    private void processFiles(List<File> files, File dir, FileFilter filter) {
      File[] subdirs = dir.listFiles(dirFilter);
      for (File subdir : subdirs) {
        if (subdir.isDirectory()) {
          processFiles(files, subdir, filter);
        }
        else if (filter.accept(subdir)) {
          files.add(subdir);
        }
      }
    }

代替アプローチ

  • RegexFileFilter: このフィルタは正規表現を使用しますファイル パターンを照合しますが、より複雑になる場合があります。 use.
  • カスタム実装: ワイルドカード マッチングを処理する FileFilter インターフェイスを実装するカスタム クラスを作成します。

以上がJava でワイルドカード パターンに一致するファイルを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。