Java Webアプリケーションでは、CLASSPATH(つまり、ソースフォルダ内)に配置されたXMLファイルのInputStreamを取得したいとします。私がやる?クラスパスリソース(XMLファイル)から入力ストリームを取得する
答えて
ClassLoader.getResourceAsStream()
。
以下のコメントに記載されているように、複数の環境(ユニットテスト、Webアプリケーションなど)を使用している場合はThread.currentThread().getContextClassLoader()
を使用する必要があります。 http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388を参照してください。
someClassWithinYourSourceDir.getClass()。getResourceAsStream();
または 'getClass()。getResourceAsStream(" ... ")など – rogerdpack
これは、XMLファイルがどこにあるかによって異なります。ソースフォルダ(「デフォルトパッケージ」または「ルート」)またはクラスと同じフォルダにありますか?
前者の場合、ファイルを見つけるために "/file.xml
"(先頭のスラッシュに注意)を使用する必要があります。また、どのクラスを使用してファイルを探しても問題ありません。
XMLファイルがいくつかのクラスの隣にある場合は、ファイル名だけのSomeClass.class.getResourceAsStream()
があります。
ClassLoader.class.getResourceAsStream("/path/to/your/xml")
コンパイルスクリプトがxmlファイルをCLASSPATHのどこにコピーしているかを確認してください。
ClassLoader.class.getResourceAsStream("/path/file.ext");
しかし、Webをデプロイするjava.lang.NullPointerException:null 'というエラーが発生します。最も簡単な方法は' new ClassPathResource( "/ path/to/your/file")です。getInputStream() ' – zhuguowei
"getResourceAsStream()" この答えのオプションが私のために動作しませんでしたのいくつかは、この1でした:。
SomeClassWithinYourSourceDir.class.getClassLoader()getResourceAsStream( "yourResource");
はデフォルトでは、各リソースは、WEB-INF/classesに展開戦争でフォルダの下にコピーされたWebアプリケーション内のクラスパスに追加しました。通過日食でアプリケーションを開発しながら
は、あなたがこれを管理することができます
右クリックしてプロジェクト - >プロパティ - > Javaのビルド・パス] - > [ソース]タブ - >デフォルトの出力フォルダサーブレットで
、リソースにアクセスするには、パスの先頭にWEB-INF/classesを指す '/'を付けます。
getClass().getResourceAsStream("/pdf-sample.pdf")
をこれはtutorialは非常によく読みの可能な方法を説明します
例えば、WEB-INF /クラス下PDF-sample.pdfがにアクセスするには、次のように使用することができますJavaアプリケーション内のクラスパスからのリソースファイルです。これは読める価値があります。
私は提案された解決策を試してみましたが、ファイル名のスラッシュが私にとってはうまくいかなかった、例:...()。getResourceAsStream( "/ my.properties"); nullが返されました
スラッシュの削除:.... getResourceAsStream( "my。プロパティ ");ここで
は、ドキュメントのAPIからです: 委任する前に、絶対リソース名は、このアルゴリズムを使用して、指定されたリソース名から構成されています
If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:
modified_package_name/name
Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e').
- 1. 入力ストリームからオーディオ入力ストリームを取得できませんでした
- 2. 入力ストリームからジャンクトラッキングXMLを削除する
- 3. XMLファイルからデータを取得する
- 4. 複数のディレクトリから入力ファイルを取得するHadoopジョブ
- 5. xmlからユーザー入力とユーザーが入力リストから選択したデータを取得する
- 6. インターネットエクスプローラのファイル入力からファイル名のみを取得
- 7. 標準入力ストリームからHadoopを読み取る
- 8. 入力ストリームからアンドロイドでファイルに書き込みますか?
- 9. XMLにAndroid FTPの入力ストリーム
- 10. XmlReaderからストリームを取得
- 11. xuggler icontainerは入力ストリームから読み取る
- 12. ストリーム入力からルート要素のないXMLフラグメントのリストを解析する
- 13. リソースファイル/コンテンツからストリームを取得する
- 14. JavaからRTMPストリームを取得する
- 15. ファイルのHTMLからのコード入力から完全なファイルパスを取得する
- 16. ファイル記述子からFILE *ストリームを取得する方法は?
- 17. httpサーバからxmlストリームを取得中 - android problem
- 18. ダイナミックコントロールからユーザー入力を取得
- 19. html入力フィールドから値を取得
- 20. 入力からコマンドを取得
- 21. wpfウィンドウからテキスト入力を取得
- 22. xmlファイルからタイトルリストを取得
- 23. 入力を待たずにキーボードから入力を取得
- 24. linuxシェルスクリプト:ユーザ入力文字列からファイル名を取得
- 25. Cのコマンドライン入力からファイルのサイズを取得
- 26. NetBeansの出力タブから入力を取得する方法
- 27. ファイルを入力ストリームとして読み込むときにExcelファイル名を取得する方法
- 28. ストリーミングハーププログラムで入力ファイル名を取得
- 29. IE8 - 入力(type = "file")ファイルを取得
- 30. テキストボックスからの入力値の取得
は、コード例のための個人的な記事を参照してください:のhttp:/ /tshikatshikaaa.blogspot.nl/2012/07/maven-how-to-access-filesdata-in.html – JVerstry
マルチクラスローダー環境(ユニットテスト/ Webアプリケーションなど)にいる場合は、このスレッドを使用する必要があります.currentThread()。getContextClassLoader()。http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388 – khylo
答えに@khyloの提案を追加してください。 – froginvasion