パッケージ org.opengion.fukurou.util

クラス FindClassFiles


  • public final class FindClassFiles
    extends Object
    このクラスは、指定のディレクトリパスから .class ファイルを検索するクラスです。 検索パスは、実ファイルと、zipファイルの内部、jar ファイルの内部も含みます。 検索結果は、.class を取り除き、ファイルパスを、すべてドット(.)に変換した形式にします。 これは、ほとんどクラスのフルパス文字列に相当します。 ここで取得されたファイル名より、実クラスオブジェクトの作成が可能になります。 このクラスの main メソッドは、クラスパスから指定の名前を持つクラス以下のディレクトリより ファイルを検索します。通常、このクラスの使い方として、取得したクラスファイル名(文字列) から、引数なしコンストラクタを呼び出して、実オブジェクトを生成させるので、通常のフォルダ から検索するより、クラスパス内から検索するペースが多いため、サンプルをそのように設定 しています。
    変更履歴:
    4.0.0.0 (2004/12/31) 新規作成
    機能分類
    初期化
    バージョン
    4.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの詳細

      • FindClassFiles

        public FindClassFiles​(String filepath,
                              String keyword)
        検索パスを指定して構築する、コンストラクタです。 ここで見つかったパス以下の classファイル(拡張子は小文字で、.class )を検索します。 このファイル名は ファイルパスを ドット(.)に置き換え、.class を取り除いた格納しておきます。 ※ Tomcat8.0.3 では、ClassLoader の getResources(String)で取得するURL名が、 /C:/opengionV6/uap/webapps/gf/WEB-INF/classes/org/opengion/plugin/ の形式で、最後の "/" を取る為、filepath.length() - 1 処理していましたが、 Tomcat8.0.5 では、/C:/opengionV6/uap/webapps/gf/WEB-INF/classes/org/opengion/plugin の形式で、最後の "/" がなくなっています。 最後の "/" があってもなくても、new File(String) でディレクトリのオブジェクトを 作成できるため、filepath.length() に変更します。
        パラメータ:
        filepath - 対象となるファイル群を検索する、ファイルパス
        keyword - 検索対象ファイルのキーワード
        変更履歴:
        4.0.3.0 (2007/01/07) UNIXパス検索時の、ファイルパスの取得方法の不具合対応, 5.0.0.0 (2009/08/03) UNIXパス検索時の、ファイルパスの取得方法の不具合対応, 5.0.0.0 (2009/08/03) UNIXパス検索時の、ファイルパスの取得方法の不具合対応, 5.7.5.0 (2014/04/04) ファイル名の取得方法の修正
    • メソッドの詳細

      • getFilenames

        public String[] getFilenames()
        ファイルパスを ドット(.)に置き換え、.class を取り除いた形式(クラスの完全系)の文字列配列。
        戻り値:
        ファイルパスの文字列配列
        このメソッドは、nullを返しません
      • main

        public static void main​(String[] args)
        サンプルメイン ここでは、引数に通常のファイルではなく、クラスパスより取得します。 通常、取得されたファイル名は、クラスの完全系の文字列なので、クラスパスより取得 している限り、そのまま オブジェクトを構築できることを意味します。
        パラメータ:
        args - 引数
        変更履歴:
        6.8.5.1 (2018/01/15) ファイル名は、##バージョン番号を変換しておく必要がある。