• ベストアンサー

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 %>

  • mune
  • お礼率13% (21/151)
  • Java
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • pasta500g
  • ベストアンサー率46% (30/65)
回答No.3

> FileReader h_fr = new FileReader("1.txt"); ここのところですが、JSPのスクリプトレット内からの 相対パスは、*.jspファイルからのパスではなく、 JSPがServletに変換されてclassファイルとして classesディレクトリなどに配備された位置からの パスになるはずです。

その他の回答 (2)

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.2

FileReader h_fr = new FileReader("1.txt"); やはり、ここですね。 1.txtを絶対パス(c:\\autoexec.bat)で与えたら大丈夫でしたよ。

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.1

new FileReader("1.txt"); の 1.txt は、jspと同じフォルダに入っているのでしょうか? エラーというのは、具体的にどこで発声しているのですか?

mune
質問者

補足

入っています。 おそらくFileReaderやBufferedReaderのオブジェクト(?)が無い といった感じのエラーがでてました。

関連する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で聞きたいことがあります。

    JSPを学んで一ヶ月になります。以下の内容で質問があります。 <%@ page contentType="text/html;charset=Shift_JIS"import="java.io.*,java.util.*" %> <html> <head> <title>住所録</title> </head> <body> <h1 style="font-size:14pt;background:#cccccc">住所録</h1> <table border="0"> <tr style="background:#00ccff"> <th>No.</th><th>名前</th><th>性別</th><th>電話番号</th><th>住所</th> </tr> <% String tmpStr; StringTokenizer tkn; FileReader fr=new FileReader( application.getRealPath("myData/data.txt")); BufferedReader br=new BufferedReader(fr); while(br.ready()){ tmpStr=br.readLine(); out.println("<tr style='background:#ffffcc'>"); tkn=new StringTokenizer(tmpStr,"\t"); while(tkn.hasMoreTokens()){ out.println("<td>" + tkn.nextToken() + "</td>"); } out.println("</tr>"); } br.close(); %> </table> </body> </html> というコードがあるのですが、上記のコード中にあるwhile文をdo分に変えて、whileと同じように表示するのは可能でしょうか?ちなみに私は、 do{ tmpStr=br.readLine(); out.println("<tr style='background:#ffffcc'>"); }while(br.ready()); tkn=new StringTokenizer(tmpStr,"\t"); do{ out.println("<td>" + tkn.nextToken() + "</td>"); out.println("</tr>"); br.close(); }while(tkn.hasMoreTokens()); と記述したのですが、実行してみると、一部しか表示されず、しかも全ての情報が <th>NO.</th> に入ってしまうのです。そこで質問ですが、whileからdo文に変えて同じように表示するのは可能なのでしょうか?わかる方がいれば、お願いします。

    • ベストアンサー
    • Java
  • エラーの原因がわかりません

    JAVA初心者ですが、ファイル入力を行うプログラムを実行 すると、エラーが出ますが、そのエラーの原因が まったく見当がつきません。 誰か教えてください。 ------------読み込みデータ(loc.dat) 2 11 1 4 1 5 7 1 3 7 7 2 12 11 1 4 1 11 12 4 1 5 3 1 1 11 13 4 1 5 2 1 -------------プログラム import java.io.*; class ExReader {   public static void main(String[] args) { try { //読み込みファイル指定 FileReader fr = new FileReader("loc.dat"); BufferedReader br = new BufferedReader(fr); //ファイルから1行ずつ読み込む String s; while ((s = br.readLine()) != null) { System.out.println(s); } //読み込みファイルをクローズする br.close(); } catch (Exception e) { System.out.println("err: "+e); System.exit(1); } } } ---------------コンパイル結果 C:\JAVA\sim>javac ExReader.java ExReader.java:7: シンボルを解決できません。 シンボル: コンストラクタ FileReader (java.lang.String) 場所 : FileReader の クラス FileReader fr = new FileReader("loc.dat"); ^ ExReader.java:8: シンボルを解決できません。 シンボル: コンストラクタ BufferedReader (FileReader) 場所 : java.io.BufferedReader の クラス BufferedReader br = new BufferedReader(fr); ^ エラー 2 個

    • ベストアンサー
    • Java
  • 文字列の置換

    JAVAであるファイル内の文字列を置換するプログラム(日本語)を作りたいのですが、 ・ ・ String h_s; FileReader h_fr = new FileReader(in_filename); BufferedReader h_br = new BufferedReader(h_fr); while(true){  h_s = h_br.readLine();  if (h_s == null){   break;  }  ●文字列を置換するプログラム● } ・ ・ ここの●文字列を置換するプログラム●にあたる適当な関数って何かありますか? たとえばperlでいうと↓みたいなものなのですが・・・ s/置換前文字/置換後文字/g よろしくお願いします。

    • ベストアンサー
    • 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
  • ファイル読み込みと書き込み

    JAVA初心者です。 以下のscore.txtというファイルを読み込んで、result.txtというファイルに科目合計と合計の降順にソートして出力したいと思っているんですが、どう記述していいのか全然わかりません。どなたかソースを教えて下さい。(※人数や科目が増えた時に修正しないようにArrayListを使用) (score.txt) 名前,国語,数学,社会,理科,英語 山田一朗80,80,78,60,75 山田次郎40,12,50,37,89 山田三郎60,38,45,68,40 山田四郎85,95,65,57,58 山田五郎90,95,55,45,72 ↓↓↓↓↓↓↓↓↓↓↓↓ (result.txt) 順位 名前 国語 数学 社会 理科 英語 合計 1 山田一郎 80 80 78 60 75 373 2 山田四郎 85 95 65 57 58 360 3 山田五郎 90 95 55 45 72 357 4 山田三郎 60 38 45 68 40 251 5 山田次郎 40 12 50 37 89 228 科目合計 355 320 293 267 334 1569 ------------------------------------------------------------- import java.io.*; class Test { public static void main(String[] args){ File score1 = new File("score.txt"); // ファイル読み込み BufferedReader br = new BufferedReader(new FileReader(score1)); // 最終行まで読み込む while (br.ready()) { String line = br.readLine(); までは何となくわかったのですが・・・・。

  • ファイルの読み込み

    "DataFile"に何行か文字列がはいっており、下のソースでそれをテキストボックスにすべて出力したいのですが、1行しか読まれません。 やり方を教えてください。 String moji = null; FileRead(){   try {     BufferedReader br = new BufferedReader( new FileReader( "DataFile.txt" ) );     while ((moji = br.readLine()) != null){       taList.setText(moji);     }     br.close();   }   catch ( Exception e ) {     System.out.println( e.getMessage() );   } }

    • ベストアンサー
    • Java
  • 拡張子の読み込み制限を設けたいのですが・・・

    現在Javaのプログラム課題を行っているものです。 前回こちらで質問させていただいたのですが、 解決に至らなかったので再度質問させていただきたいと思います。 前回の質問→ http://okwave.jp/qa4023470.html こちらが修正後のプログラムの一部です。↓ package studyA; import java.util.*; import java.io.FileReader; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.IOException; public class A23_StrArray extends A22_StrArray { /** * テキストファイルの読込み(上書きモード) * @param path ファイルのパス * @exception FileNotFoundException ファイルが見つからなかった場合 * IOException 入出力エラーが発生した場合 */ // 修正として付け加えた部分(開始位置) public class CheckClass check { check = new CheckClass(); check = path; public boolean accept(path) { //拡張子がtxtであるかのの判定を行います。 String ext = getExtension(path); if (ext != null && ext.equals("txt")) { return true; } } } //プログラム修正箇所 (終点) public void readFile(String path) throws Exception { try { //BufferedReader in = new BufferdReader(new FileReader()) FileReader fr = new FileReader(path); //FileReaderのインスタンスを作成 BufferedReader br = new BufferedReader(fr); //BufferedReaderのインスタンスを作成 String line; list.clear(); //リストをクリア while ((line = br.readLine()) != null) //要素がなくなるまで繰り返す { add(line); } System.out.println("ファイルを読み込みしました。"); br.close(); } catch(FileNotFoundException e)//ファイルが見つからなかった時 { System.out.println("ファイルが見つかりません。"); } catch(IOException e)//入出力エラーが発生した場合 { System.out.println("入出力エラーが発生しました。"); } } 現在は、コンパイルエラーでC:\Java>javac A23_StrArray.java A23_StrArray.java:28: '{' がありません。 public class CheckClass check と表示されます。一体どのように修正を加えれば、 txtのみ読み込んで、上書きなどができるプログラムを作ることができるのでしょうか?

    • ベストアンサー
    • Java
  • はじめまして。よろしくお願いいたします。

    はじめまして。よろしくお願いいたします。 java初心者です。 javaでファイルを読み込み、1行ずつ処理して別プログラムに出力するプログラムを作成しています。 ----サンプルソースコード import java.io.*; class testReader { public static void main(String[] args) { FileReader fr = new FileReader("test.txt"); BufferedReader br = new BufferedReader(fr); while (true) { String readLine = br.readLine(); : : ----サンプルソースコード 上記のような感じで処理を進めるのですが、1点問題にぶつかりました。 readLineで読み込んだ行にタブ文字がある場合、タブ文字が消えてしまいます。 読み込むテキストファイルはShift-JISで保存されています。 なにか回避策はございませんでしょうか。 よろしくお願いいたします。

  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java