プロが教えるわが家の防犯対策術!

以下のようなプロジェクトがあるとします。

tomcatproject
|
|-WEB-INF
  |
  |-conf(appli.properties)
  |
  |-src
   |
   |-test(TestServlet.java)

TestServletの内容は以下の通りです。(一部省略)
----------------------------------------------------
private static Properties p = new Properties();

public void init(){
 try {
  p.load(new FileInputStream("/tomcatproject/WEB-INF/conf/appli.properties"));
 } catch (FileNotFoundException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 }
}
----------------------------------------------------
PropertiesのloadにいったときにFileNotFoundExceptionが
発生してしまうのですが、いろいろ試した結果絶対パス以外は
通らないんです・・・。(C:\eclipse\workspace\........)
どうやれば相対パスで通りますか?

ご教授頂ければ幸いです。
よろしくお願い致します。

A 回答 (1件)

WEBシステムのカレントディレクトリは


request.getRealPath("");
でとれます。
あともし今の環境がWindowsなら区切り文字は"\\"ですがこの環境はWindowsじゃないんですか?

多分プロジェクトフォルダがカレントディレクトリなので
(Windowsの場合)
p.load(new FileInputStream("\\WEB-INF\\conf\\appli.properties"));
でとれるんじゃないかと思います。

(もしマルチOSにしたいなら
「\\」のところをSystem.getProperty("file.separator")でおきかえましょう。)

確かめてないので間違ってたらごめんなさい。

この回答への補足

試してみましたがダメでした・・・。
今回の処理はinitメソッドで行うので
requestは取れません。。
>request.getRealPath("");

私も最初はこれで取れると思っていましたが
なぜか取れないんです。
>"\\WEB-INF\\conf\\appli.properties"

ちなみに環境はWindowsですが、
\\じゃなくても/でいけますよ(^^

補足日時:2005/03/15 18:15
    • good
    • 0
この回答へのお礼

ServletConfigからパスを取得することが
できました!!
public void init(ServletConfig config){
String path = config.getServletContext().getRealPath("");

どうもありがとうございます(^^

お礼日時:2005/03/15 19:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!