4

問題文:
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/

4

1 に答える 1

3

あなたがやろうとしていることは、私には不可能だと思います。

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メソッドにフォールバックして、それぞれへの参照をロードできます (名前とパスが得られたので)。

于 2012-07-17T05:57:01.130 に答える