- PR -

classファイルやjspファイルのパスを知るには?

1
投稿者投稿内容
mtk
会議室デビュー日: 2003/08/12
投稿数: 8
投稿日時: 2003-09-22 17:56
基本的な質問で恐縮なのですが、
実行中のclassファイルやjspファイルのファイルパスを
知るためのプロパティはあるのでしょうか?


classファイルと同じパスにあるテキストファイルを
絶対パスで指定し、読み書きしたいだけなのですが…
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-09-22 18:19
classファイルのURLなら次のように取得できます。
コード:

public class Test {
public static URL getClassURL(){
return Test.class.getResurce("Test.class");
}
}



ただし、mtkさんのやりたいことの場合だと、
コード:

public class Test {
public static URL getTextURL(){
return Test.class.getResurce("xxx.txt");
}
}


として、直接テキストファイルのURLを取得する方が自然でしょう。
xxx.txtはclassファイルのあるディレクトリからの相対パスです。
getResourceAsStreamを使えば、URLでなく、ストリームを取得することができます。

#二つ目のコード例のメソッド名を変更 getClassURL → getTextURL

[ メッセージ編集済み 編集者: Wata 編集日時 2003-09-22 18:47 ]
mtk
会議室デビュー日: 2003/08/12
投稿数: 8
投稿日時: 2003-09-22 18:34
Wataさん、素早いレスありがとうございます。


質問内容が説明不足だったようで申し訳ありません。

私が知りたいのはディスク上のファイルパスなんです。
例えば、実行するclassファイルのパスが
C:\xxx\Test.class
であれば、
「C:\xxx\」の部分をStringで返すプロパティ等を知りたいのです。


勉強不足で恐縮ですが、引き続きご教示をお願いします。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-09-22 19:09
Wataです。
URLが取得できれば、正攻法ではないかもしれませんが、
ファイルのパスも間接的に得ることができると思います。

URL#getPath()でURLのパスを文字列で取得することができるので、
ローカルディスク上のファイルなら、先頭の"file:/"を取り除いてやればOKだと思います。
ただし、getPath()で得られる文字列はURLEncodingされているので
デコードする必要があります。

fileプロトコルのURLからFileオブジェクトを返すメソッドは、
あってもよさそうなものですが、どうもないようです。 # あったら誰か教えて

なお、classファイルがjarに含まれていて、jarファイル自体のファイルパス
を知りたい場合だと、もう少し複雑な処理が必要になると思います。

ところで、テキストファイルを読み込みたいだけなら、URLやストリームの
直接取得で十分だと思うのですが...。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-09-22 19:21
追加です。
Webアプリケーションなら、ServletContextのgetRealPath()で目的のパスを
得られるかもしれません。試してみてください。
mtk
会議室デビュー日: 2003/08/12
投稿数: 8
投稿日時: 2003-09-22 20:38
Wataさん、かさねがさねありがとうございます。

ご教示いただいたとおりに試してみます。

本当にありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)