問題文:
package に一連の構成ファイルを含む jar ファイルがありますmycompany/configuration/file/
。
ファイル名がわかりません。
私の意図は、パッケージ化されているjarファイルから実行時にファイル名をロードし、それをアプリケーションで使用することです。
私が理解している限り: を使用するClassLoader.getResources("mycompany/configuration/file/")
と、すべての構成ファイルを URL として取得する必要があります。
しかし、これは何が起こっているのかです:
I
get one URL object with URL with URLjar:file:/C:/myJarName.jar!mycompany/configuration/file/
1 に答える
あなたがやろうとしていることは、私には不可能だと思います。
getResource
ディレクトリまたはフォルダの下に値をリストするのでgetResources
はなく、クラスローダーのクラスパス内で名前付きリソースを見つけることに関するものです。
したがって、たとえば、クラスローダーのクラスパス内のmycompany/configuration/fileパスに存在するConfig.cfgClassLoader.getResources("mycompany/configuration/file/Config.cfg")
という名前のすべてのファイルが返されます (これは、個人的にバージョン情報をロードする場合に特に便利です)。
あなたの場合、ほぼ半分の解決策があると思います。返される URL には、ソースの jar ファイル (jar:file:/C:/myJarName.jar) が含まれています。この情報を使用して、jar ファイルをクラックして開き、エントリのリストを読み取り、名前が「mycompany/configuration/file/」で始まるエントリをフィルタリングできます。
そこから、getResource
メソッドにフォールバックして、それぞれへの参照をロードできます (名前とパスが得られたので)。