Java での getResourceAsStream の使用法 (パスを取得)

1. 使用方法

Java の getResourceAsStream には次の型があります。

  1. Class.getResourceAsStream(String path) : パスが'/' で始まらない場合、リソースはデフォルトでこのクラスが配置されているパッケージから取得され、'/' で始まる場合はルートから取得されます。クラスパス。パスを介して絶対パスを構築するだけで、最終的に ClassLoader がリソースを取得します。
  2. Class.getClassLoader.getResourceAsStream(String path) : デフォルトでは、ClassPath のルートからリソースを取得します。パスを '/' で始めることはできず、最後に ClassLoader がリソースを取得します。
  3. ServletContext.getResourceAsStream(String path) : デフォルトでは、リソースは WebAPP のルート ディレクトリから取得されます。Tomcat の下のパスが '/' で始まるかどうかは関係ありません。もちろん、これは特定のコンテナ実装に関連します。
  4. Jsp 下のアプリケーション組み込みオブジェクトは、上記の ServletContext の実装です。

たとえば、プロジェクト ディレクトリは次のとおりです。 

|--project 
     |--src 
         |--com.x
		 	 |--file 
				|--myfile3.xml
		     |--y 
				|--Test.java 
				|--myfile.xml
				|--file 
					|--myfile2.xml
     |--target
         |--com.x
		 	 |--file 
				|--myfile3.xml
		     |--y 		 
				|--Test.class 
				|--myfile.xml
				|--file 
					|--myfile2.xml

getResourceAsStream の使用法はおおよそ次のとおりです。

1 つ目: ロードするファイルと .class ファイルは同じディレクトリにあります。たとえば、com.xy の下にクラス Test.class があり、同時にリソース ファイル myfile.xml があります。その場合、コードは次のようになります。

Test.class.getResourceAsStream("myfile.xml");

2 番目: リソース ファイルは Test.class ディレクトリのサブディレクトリにあります。たとえば、リソース ファイル myfile2.xml は com.xyfile ディレクトリにあります。その場合、コードは次のようになります。

Test.class.getResourceAsStream("file/myfile2.xml");

3 番目: リソース ファイルが Test.class ディレクトリにもそのサブディレクトリにもありません (例: com.x.file ディレクトリ内のリソース ファイル myfile3.xml)。その場合、コードは次のようになります。

Test.class.getResourceAsStream("/com/x/file/myfile3.xml");

2. まとめ

まとめると、実は書き方は2通りあります。

最初:パスは「/」で始まります

このうち「/」はプロジェクトのルートディレクトリを表します。

Test.class.getResourceAsStream("/com/x/file/myfile3.xml");

2 番目: パスが「/」で始まっていない

現在のクラスのディレクトリを表します

Test.class.getResourceAsStream("myfile.xml");

Test.class.getResourceAsStream("file/myfile2.xml"); 

おすすめ

転載: blog.csdn.net/icanlove/article/details/44097839