web-dev-qa-db-ja.com

ClassLoaderの絶対パスを使用getResourceAsStream()

ClassLoader getResourceAsStream()を使用しようとしています

私のDirecoryの構造は次のようになります。

_Project1

 -src
  -main
   -Java
  -webapp
   -WEB-INF
-MYLOC
-someprops.properties
_

classloader.getResourceAsStream("MYLOC/someprops.properties")の場合は正常に機能します。

しかし、_C:\someprops.properties_のように、プロパティファイルを.warの外に移動する必要があります。

ただし、classloader.getResourceAsStream("C:\someprops.properties")は機能しません。絶対パスを使用できませんか?

9
user3018487

ネイティブファイルパスがある場合は、getResourceAsStreamを使用する必要はなく、通常の方法でFileInputStreamを作成するだけです。

Properties props = new Properties();
FileInputStream in = new FileInputStream("C:\\someprops.properties");
try {
  props.load(in);
} finally {
  in.close();
}

(ファイルが大きい場合は、FileInputStreamBufferedInputStreamでラップすることをお勧めします)

17
Ian Roberts

メソッドclassloader.getResourceAsStreamは、クラスパス上のリソースを検索します。 someprops.propertiesファイルをclassloader.getResourceAsStreamとともにロードする場合は、それをクラスパスに追加します。それ以外の場合、これがプロパティファイルの場合は、いつでも Properties.load メソッドを使用できます。

1
benjamin.d