3

クラスパスから特定のタイプのファイルを抽出して一時ディレクトリに配置しようとしていますが、「クラスパスへの相対パス」に従ってリソースを抽出したいと考えています。

Spring の PathMatchingResourcePatternResolver を使用して、一致するリソースのリストを取得できます。たとえばclasspath*:/xyz/**/*.bar、クラスパスからスキャンしていて、クラスパスに があり/xyz/some/dir/foo.bar、このリソースを に抽出したいとしMY_TEMP_DIR/some/dir/foo.barます。このリソースのクラスパスへの相対パスを取得して、それに応じて出力場所を構築できる方法はありますか?

PathMatchingResourcePatternResolver はリソースの配列のみを返すため、リソースの URL しか取得できませんが、このリソースの「ルート」ディレクトリも知りたいです。jar:file:/some/path/somejar.jar!/xyz/some/dir/foo.bar返されるリソースは、file:/some/output/directory/xyz/some/dir/foo.barなどのさまざまな「形式」にすることができます。

リソースの抽出または classpath-root-relative-path ルックアップを実現する方法についてヒントを教えてもらえますか?

ありがとう


編集:

質問を別の方法で表現した方がよいかどうかはわかりません。

リソースの「クラスパスへの相対パス」を知る方法はありますか? 前の例を使用してください。スキャンclasspath*:/xyz/**/*.barしてリソースを取得したfile:/some/output/directory/xyz/some/dir/foo.bar場合、そのリソース () の「相対パス」を取得する方法はあります/xyz/some/dir/foo.barか?

4

1 に答える 1

1

を使用しPathMatchingResourcePatternResolver.getResources(String pattern)て、パターンに一致するリソースのリストを取得します。Resource.getURL() によって返される URL を解析するのは簡単です。

次のように見えるはずですjar:file://path/to/jar.jar!/path/to/your/resource/foo.bar

于 2012-08-01T04:16:36.977 に答える