- ベストアンサー
ファイルのパスの取得について
いつも参考にさせて頂いています。 掲示板をファイル操作にて作成しようと思っています。 初歩的な質問かもしれませんが宜しくお願いします。 フォルダ構成が下記の場合、「confフォルダのtest.txt」を読み込む際のパスはどのように取得もしくは指定すれば良いでしょうか? プロジェクトフォルダ | |----JavaSource ←.javaファイルを格納 |----WebContent |----css |----js |----WEB-INF |----conf ←このフォルダ内のtest.txt |----jsp |----lib ファイルの読み込みはBufferedReaderクラスを使うと効率よく読み込めるとネットで記述があったのでそれを使おうと思ってます。 BufferedReader br = new BuffferedReader(new FileReader("test.txt") ); みたいな感じで読み取れると思ってますが合ってますでしょうか? ("test.txt"の箇所に取得した(絶対又は相対)パスが入ると思ってます。) 以上宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ファイルのパスの取得方法がわからない、ということでしょうか? String path = application.getRealPath("WEB-INF/conf/test.txt"); JSPなら、こんな感じで、test.txtの絶対パスが取得できます。後は、それを元にストリームを作成すればよいかと。サーブレットなら、ServletContext application = this.getServletContext();などで取得して同様に行えばいいでしょう。
その他の回答 (1)
- thamansa
- ベストアンサー率40% (95/232)
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(path))); pw.println("テスト"); pw.close(); この3行は怪しげでしたが、試してみたらファイルへの 書き出しはできましたので、 path が思っているファイルを指していないのでは? path の内容を出力して、 プロジェクトフォルダ/WebContent/WEB-INF/conf/text.txt となっているか確認してみてください。
お礼
早速のお返事ありがとうございます。 読み込みができました!ありがとうございます。 ですが書込みができません。 // 以下読み込み ServletContext application = this.getServlet().getServletContext(); String path = application.getRealPath("/WEB-INF/conf/test.txt"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path)); int i = bis.available(); byte[] buf = new byte[i]; bis.read(buf); bis.close(); // 以下書込み PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(path))); pw.println("テスト"); pw.close(); System.out.println("取得した文字列は" + new String(buf)); ↓ 取得した文字列はテスト とちゃんと表示されるのですが、test.txtの中身を見てみると「テスト」とは書込みがされていません。 どこか間違っているのでしょうか?