- - PR -
サーブレットでファイルの読書き
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-08 17:57
javaサーブレットでファイルの読書きをしようと思っています。
しかし、ファイルのオープンで例外「Permission denied」が発生し困っています。 原因をご存知の方、アドバイスお願いいたします。 コード抜粋---------------------------------------------------- FileOutputStream outFile = null; try { outFile = new FileOutputStream("Hoge.txt", true); } catch( IOException e ) { pw.println("ファイルオープン失敗じゃ! " + e.getMessage() + "<BR>\n"); return; } その他---------------------------------------------------- 1)サーバは、あるレンタルサーバを使用しています。 tomcatは4.1.31、jdkは1.4.2 2)サーブレットとHoge.txtは、同じフォルダに保存しています。 3)Hoge.txtの属性は「777」にしてあります。(何でもありあり) | ||||||||
|
投稿日時: 2005-06-08 18:08
この方法では、サーブレットと同じところには作られません。 おそらくは、$CATALINA_HOME/binに作られてるんじゃないでしょうか。 Hoge.txtでFileインスタンスを作って、絶対パスを確認してみては? | ||||||||
|
投稿日時: 2005-06-08 19:38
サーブレットからファイルを参照する場合、
ServletContext#getRealPathを使用します。 WEB-INFからのパスを入力で与えると、実際のパスが返されます。 context.getRealPath("/WEB-INF/classes/hoge.txt"); みたいに使用します。 あとは、クラスパス上にファイルが存在するのであれば、 ClassLoaderでクラスパスルートを起点としたパスでURLが取得できます。 そのURLからFileを作ってもいいかもしれません。 hoge.txtが、パッケージaaa/bbbに存在する場合、 URL url = Thread.currentThread().getContextClassLoader().getResource("aaa/bbb/hoge.txt"); でURLが取得できます。 File file = new File(url.toFile()); というような使い方ができます。 | ||||||||
|
投稿日時: 2005-06-08 22:23
Edossonさん、かつのりさん、レスありがとうございます。
パスでしたか。 ServletContext#getRealPathを使用して、問題解決しました。 ありがとうございました。 |
1