リソースフォルダ内のすべてのファイルを取得して、JAXB
unmarshallerで使用できるようにしようとしていますが、通常のfile.listFiles()
Javaで。リソースディレクトリJerseyサーブレット内のすべてのファイルを一覧表示
私はFile files = new File(this.context.getResource("/WEB-INF/folder").getPath());
を試してforeachループで使用しましたが、nullポインタがスローされました。
ちょうどそれを指摘するために、文脈はジャージー@Context ServletContext context
注射変数です。今getResourcePaths
を使用してURIに各パスを変換し、ファイルにより
@Update
[OK]を、IM。 Tomcatのより
Set<String> catalogosPath = this.context.getResourcePaths("/WEB-INF/catalogos/");
for(String catalogoPath : catalogosPath){
URI uri = context.getResource(catalogoPath).toURI();
File arquivo = new File(uri.getPath());
tempCat = (Catalogo) jaxbUnmarshaller.unmarshal(arquivo);
catalogos.add(tempCat);
}
私にエラーを投げている、それはファイル/localhost/cvrest/WEB-INF/catalogos/myfile.xml
doesntのは存在するが、それは存在と言います。私はそれをアンマーシャリングしようとしているが、それは私にファイルが見つからないままにしておく。私はgetresourcepathsからの戻り値を忘れているかもしれません、それは私にURLを与えます、私はそれを正しく変換していますか?
あなたが得た答えは、決して 'getResourcePaths()'を使うだけで、 'getRealPath()'を使わないでください。 http://stackoverflow.com/q/12160639 – BalusC
@BalusC私はそれを認識していませんでした。私は 'getResource()'を使う答えを更新しました。 –
@Cássio:ローカルディスクファイルシステムのパスとして扱っています。前述のように、 'getResourcePaths()'を使い、決してそれらを 'File' /' Path'に変換しません。定義ファイルごとではありません。それらはメモリや仮想ファイルシステム、あるいはネットワーク上の他の場所に置くことができます(言い換えれば、URIは 'file://'で始まる保証はありません)。 – BalusC