teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2017/01/13 05:04

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,4 +1,8 @@
1
1
  ResourceBundleを使うのはロケールによる国際化を行う場合に用いる方法だと思います。Webサーバーで用いるならサーバーのデフォルトロケールによってgetBundleしても意味がなく、クライアントのロケールをなんらかの形で取得しそれを通じてプロパティーをロードするなどの配慮が必要ではないでしょうか?
2
2
 
3
3
  国際化が必要ないのであれば質問者さんのコードにあるように単純にInputStreamからloadして問題ないと思います。問題はFileを生成する際に相対パスを指定している点ではないでしょうか?
4
- `file = new File("test.properties")`としたあと、`file.getAbsolutePath()`をログに出力するなどして確認すればどのディレクトリーで実行されているか確認できると思いますが、本来は絶対パスでFileを生成すべきと思います。
4
+ `file = new File("test.properties")`としたあと、`file.getAbsolutePath()`をログに出力するなどして確認すればどのディレクトリーで実行されているか確認できると思いますが、本来は絶対パスでFileを生成すべきと思います。
5
+
6
+ ---
7
+ 訂正:
8
+ 「本来は絶対パスでFileを生成すべき」と書きましたがそれはFileを用いる場合の話で、アプリケーションに紐づいたファイルなのでA-pZさんがおっしゃるようにJavaのソースファイルツリー上において`Class#getResourceAsStream`のような方法で得たInputStreamを使うのがよいと思いました。Fileは使わない方がよさそうです。

1

訂正

2017/01/13 05:04

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,4 +1,4 @@
1
1
  ResourceBundleを使うのはロケールによる国際化を行う場合に用いる方法だと思います。Webサーバーで用いるならサーバーのデフォルトロケールによってgetBundleしても意味がなく、クライアントのロケールをなんらかの形で取得しそれを通じてプロパティーをロードするなどの配慮が必要ではないでしょうか?
2
2
 
3
3
  国際化が必要ないのであれば質問者さんのコードにあるように単純にInputStreamからloadして問題ないと思います。問題はFileを生成する際に相対パスを指定している点ではないでしょうか?
4
- `file = new File("test.properties")`としたあと、`file.getAbsolutePath()`をログに出力するなどして確認すればどのディレクトリーで実行されているか確認できると思いますが、本来は絶対パスでFileを出力すべきと思います。
4
+ `file = new File("test.properties")`としたあと、`file.getAbsolutePath()`をログに出力するなどして確認すればどのディレクトリーで実行されているか確認できると思いますが、本来は絶対パスでFileを生成すべきと思います。