2016-05-26 13 views
0

リソースフォルダ内のすべてのファイルを取得して、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を与えます、私はそれを正しく変換していますか?

+0

あなたが得た答えは、決して 'getResourcePaths()'を使うだけで、 'getRealPath()'を使わないでください。 http://stackoverflow.com/q/12160639 – BalusC

+0

@BalusC私はそれを認識していませんでした。私は 'getResource()'を使う答えを更新しました。 –

+0

@Cássio:ローカルディスクファイルシステムのパスとして扱っています。前述のように、 'getResourcePaths()'を使い、決してそれらを 'File' /' Path'に変換しません。定義ファイルごとではありません。それらはメモリや仮想ファイルシステム、あるいはネットワーク上の他の場所に置くことができます(言い換えれば、URIは 'file://'で始まる保証はありません)。 – BalusC

答えて

-1

サーブレット内にcontext.getRealPath("/")を使用すると、プロジェクトの基本パスを取得できます。例えば、context.getRealPath("/") + "/WEB-INF/classes/folder

関連する問題