• ベストアンサー

ファイルのパスの取得について

いつも参考にさせて頂いています。 掲示板をファイル操作にて作成しようと思っています。 初歩的な質問かもしれませんが宜しくお願いします。 フォルダ構成が下記の場合、「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"の箇所に取得した(絶対又は相対)パスが入ると思ってます。) 以上宜しくお願いします。

  • Java
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

ファイルのパスの取得方法がわからない、ということでしょうか? String path = application.getRealPath("WEB-INF/conf/test.txt"); JSPなら、こんな感じで、test.txtの絶対パスが取得できます。後は、それを元にストリームを作成すればよいかと。サーブレットなら、ServletContext application = this.getServletContext();などで取得して同様に行えばいいでしょう。

pgBeginImo
質問者

お礼

早速のお返事ありがとうございます。 読み込みができました!ありがとうございます。 ですが書込みができません。 // 以下読み込み 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の中身を見てみると「テスト」とは書込みがされていません。 どこか間違っているのでしょうか?

その他の回答 (1)

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.2

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(path))); pw.println("テスト"); pw.close(); この3行は怪しげでしたが、試してみたらファイルへの 書き出しはできましたので、 path が思っているファイルを指していないのでは? path の内容を出力して、 プロジェクトフォルダ/WebContent/WEB-INF/conf/text.txt となっているか確認してみてください。

関連するQ&A

  • javaで大量のファイルを読み込む方法

    javaプログラミングについて質問です。 例えば、a1.txt~a100.txtの100個のテキストファイルがある として、これをループか何かを使って順番に読み込みたいのですが、 そのような方法はあるのでしょうか。 // ファイル入力ストリームを取得 BufferedReader br = new BufferedReader(new FileReader("a1.txt")); BufferedReader br2 = new BufferedReader(new FileReader("a2.txt")); BufferedReader br3 = new BufferedReader(new FileReader("a3.txt")); ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ BufferedReader br100 = new BufferedReader(new FileReader("a100.txt")); という風に書くのが面倒に思っています。 宜しくお願いします。

    • ベストアンサー
    • Java
  • ファイルの取得について

    お世話になっております。 ただ今JSPにてファイルの存在チェックを行うものを作成しております。 localhost上では new File("test.txt").exists(); で”true”なのですが、 warファイルを作成後、SunOneに配備すると”false”になってしまいます。 test.txtは同じフォルダー上にあります。 String file_path = application.getRealPath("test.txt"); File test = new File(file_path); out.print(test.exists()); としても”false”になってしまいます。 どのように記述すれば”true”になるのでしょうか? お手数ですが、ご教授願います。

    • ベストアンサー
    • Java
  • CSVファイルの、列だけ取得したい

    FileReader filereader = new FileReader(FileName); BufferedReader bufferedreader = new BufferedReader(filereader); String line; int i = 0; while((line = bufferedreader.readLine()) != null) { int j = 0; StringTokenizer stringTokenizerTest = new StringTokenizer(line, ","); while(stringTokenizerTest.hasMoreTokens()) { item[j][i]=stringTokenizerTest.nextToken().toString(); j++; } i++; } filereader.close(); このような記述で、CSVの中身を全て取得することは出来るのですが、 ある一列だけ取得する方法がわかりません。 具体的には、コンボボックスにCSVのある一列だけ表示させたいです。 (その後、重複なしの値のみにフィルタリングしたい) 現在は苦し紛れに、 combo1.setModel(new DefaultComboBoxModel(new String[] { item[1][3], item[1][4], item[1][5], item[1][6], item[1][7], item[1][8], item[1][9], })); などと、配列を使ってピンポイントで値を取得していますが これでは使えないので・・ アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Java
  • テキストファイルから文字列を読み込み!!

     Java初心者です。よろしくお願いします。 テキストファイルから文書を読み込み、その文章の中のある単語を検索するにはどうすればよいのでしょうか? BufferedReader br = new BufferedReader(new FileReader("test1.txt")); で読み込みをさせているのですが、読み込んだ後、その文章の中の単語(文字列)を検索し、それを何かに出力したいと考えています。 どなたかアドバイスをください!!よろしくお願いします!!

  • 読込ファイルのパスについて

     ファイルからテキストファイルを読み込んで、フォームから入力されたデータと照合し、ファイルにあればログインするというようなwebアプリを作ろうとしています。 しかし、テキストファイルが読み込まれてないようで、正しいパスワードを入力してもログインできません。読み込むファイルへのパス指定は絶対パスなのでしょうか、呼び出し元からの相対パスを指定するのでしょうか? また、テキストファイルを置くディレクトリは決まっているのでしょうか?(「WEB-INFより上の階層に置く」など) ちなみにサーバ環境はLinux+tomcat3.2.1+apache --------------------------------------------------------------- public class LoginDataBeans { ///////// UserDataクラス ///////// private class UserData{ public String user_id; public String password; } ///////// メンバ変数 ///////// ArrayList userList; private static final String logFilename = "/tomcat/logindata";←ここのパスは「絶対パス」?、それともこのファイルからの「相対パス」? ///////// コンストラクタ ///////// public LoginDataBeans(){ String item; userList = new ArrayList(); try{ BufferedReader in = new BufferedReader(new FileReader(logFilename)); while((item = (String)in.readLine()) != null){ UserData udat = new UserData(); StringTokenizer st = new StringTokenizer(item); udat.user_id = st.nextToken(); udat.password = st.nextToken(); userList.add(udat); } in.close(); } catch(IOException e){ e.printStackTrace(); } }

    • ベストアンサー
    • Java
  • unicodeファイルの読み込み

    javaアプレット上で BufferedReader file = new BufferedReader(new FileReader("C:/test/list.txt")); で外部テキストファイルを読み込んでいるのですが、この外部テキストファイルの文字コードをANSIからUnicodeに変えるとプログラムが動かなくなります。日本語やアルファベットではない文字の保存のためにテキストをUnicodeにて保存しなければならないのですが、どうすればUnicodeのテキストファイルを読み込むことができますか。

    • ベストアンサー
    • Java
  • javaのファイル読み込み処理の質問です

    あるディレクトリから.txtファイルを検索し 検索して出た結果を1つずつ読み込んでいきたいです どのようにしたらよいのでしょうか? private static String path="C:\\textfolder "; public static voif main(String[] args) { File dir = new File(path); File[] files = dir.listFiles(); String fileName = dir.getName(); for (int s = 0; s < files.length; s++) { try {//ファイルオープン BufferedReader br = new BufferedReader(new FileReader(fileName)); } } catch (IOException e) { e.printStackTrace(); } } return; } } 現状はこのような感じになっています pathの中身はディレクトリのパスを指定しています。 ディレクトリはC:\textfolder でtextfolderというフォルダに.txt(拡張子)のファイルが複数あったとします。

    • ベストアンサー
    • Java
  • jspでファイルの読み込み

    jspでwebサーバーにある“1.txt”ファイルを読み込んでそれを表示するプログラムを作成したのですが、エラーが出てしまいます。サーバーの環境(jsp実行環境等)は問題ありません。以下のコードで何かおかしなところがありましたら教えてください。 <%@ page contentType="text/html" import="java.util.*,java.io.*" %> <% String result = ""; String h_s = ""; FileReader h_fr = new FileReader("1.txt"); BufferedReader h_br = new BufferedReader(h_fr); while(true){ h_s = h_br.readLine(); if (h_s == null){ break; } result = result + h_s; } %> <%= result %>

    • ベストアンサー
    • Java
  • JSPのcharAt()について

    JSPです。text1.txtをBufferedReaderで読み込んで、一文字ごとにchar型のline[]という配列に入れようとしています。 しかし、l.charAt();の部分でエラー起きてしまいます。 原因は何なのでしょう? 文字列をString型に直接(String l = "aaaaaa";のように)書き込むと動くようです。 String path = getServletContext().getRealPath("/WEB-INF/text1.txt"); BufferedReader br = new BufferedReader(new FileReader(path)); String l = ""; char line[]; while((l = br.readLine()) != null){ line = new char[l.length()]; for(int j=0; j <= l.length(); j++){ line[j] = l.charAt(j); out.print(l.charAt(j)); } } どこがおかしいのか、原因がわかる方教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • フォルダ内のファイル名を取得、エラーになる原因は?

    指定したフォルダ内のファイル名を1つずつ取得するサンプルコードです。 function ForlderInImgGet() { CR = String.fromCharCode(13); folder = new Folder ("../img/"); files = folder.getFiles(); for (i=0; i<files.length; i++) { txt = txt + files[i].fullName + CR; } alert(txt); } 実行すると「Folder is not defined」というエラーになってしまいます。 画像ファイルは、 ルートディレクトリ\test\img\に01.jpg~10.jpgがあります。 jsファイルは、 ルートディレクトリ\test\js\に配置してあります。 一体なぜこのようなエラーが出てしまうのでしょうか。

専門家に質問してみよう