• 締切済み

JAVA テキストの取り出し方について

■JAVAのテキストの取り出し方について質問がございます。 ■テキストから一番最初の文字列を取り出したいのですが、どのような 方法があるか教えていただきたく参りました。 ■テキストの名前は shokijii.texで 状態は  問題,回答番号,解説,0,文,1,文,2,文,3,文  問題,回答番号,解説,0,文,1,文,2,文,3,文  問題,回答番号,解説,0,文,1,文,2,文,3,文  となっております。 ■今のところプログラムの記述は BufferedReader br =null; br =new BufferedReader(new FileReader(shokuji.txt)); ■と定義していますが、テキストの最初の文字列を取り出すには    br =new BufferedReader(new FileReader(shokuji.txt));                         ↓                      ■ここの()内ので                      どのように記述したら                      よいでしょうか? ■また()内での定義にかからわらず、  ・できそうな方法 テキストは調整可能ですので、  ・テキストに付け加えこのように定義したら取り出せるよ といった提案、意見などもございましたら、どうかお教えください。 お願い申し上げます。  

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

みんなの回答

  • ad_3141
  • ベストアンサー率100% (1/1)
回答No.3

>br =new BufferedReader(new FileReader(shokuji.txt)); br =new BufferedReader(new FileReader("shokuji.txt")); としなければなりません。 FileReaderのコンストラクタ(の一つ)はStringでファイル名を受け取ります。 詳しくは、FileReaderクラスのコンストラクタを調べてください。 >テキストの最初の文字列を取り出すには というのは、「,」で区切られた最初の文字列という意味ですね。 ならば、 String str = br.readLine(); で1行目を読んだあと、 String[] part = str.split(","); とすると、part[0] に最初の文字列が part[1] に2番目の文字が... というぐらいに分割されます。 詳しくは、Stringクラスのsplitメソッドを調べてください。

回答No.2

>   br =new BufferedReader(new FileReader(shokuji.txt)); >                        ↓ >                     ■ここの()内ので >                     どのように記述したら >                     よいでしょうか? BufferedReaderクラスのJavaDocを読むと良いですよ。 >■テキストから一番最初の文字列を取り出したいのですが、どのような 方法があるか教えていただきたく参りました。 「一番最初の文字列」の意味がわかりません。 が、 一番最初の行を読みたいなら、BufferedReaderクラスのreadLineメソッドを使えば良いかと。 一番最初の文字が読みたいのなら、↑で1行読んだあとに、StringクラスのcharAtメソッドを使えば良いかと。 「一番最初の文字列」が(テキストの内容がよくわかりませんが、もし、「CSV」になっているとして)最初のカンマまでの文字列なら、java.utilパッケージのStringTokenizerクラスを使うと良いですよ。 (もしくはStringクラスのsplitメソッドなど。)

aabbccddzz
質問者

お礼

返信遅くなり申し訳ありません。アドバイスありがとうございます。 charAt()メソッドがつかえそうです。Stringメソッドはいろいろありますので、それぞれを理解しうまく使えたらと思っております。 今後とも、アドバイスを宜しくお願い致します。

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.1

これが最後のアドバイスになるかと思いますが、もう一言の 私の考えを述べさせて頂きます。 質問者の方におかれましては、”MVCパターンの考え方”はおろか、残念ながら ”オブジェクト指向とは何か”という事に関しても理解が不足しているようです。 プログラミングにおいて、 ”テキストファイルを処理して、n番目の問題のp番目の項目を取り出そう” というようなコードを書くことは決して難しいことではありません。 しかし、この様な方法は、全く   ”オブジェクト指向設計ではない” という事を知っておく必要があります。 オブジェクト指向設計で行うべきことは、 >■テキストの名前は shokijii.texで 状態は > > 問題,回答番号,解説,0,文,1,文,2,文,3,文 > 問題,回答番号,解説,0,文,1,文,2,文,3,文 > 問題,回答番号,解説,0,文,1,文,2,文,3,文 > > となっております。 もしも、この様なテキストファイルがあるのならば、 このテキストファイルから、問題集オブジェクトを生成(復元)することです。 そして、その復元された問題集オブジェクトから、適切なメソッドを使って 所望の問題オブジェクトを取得し、そこから、問題文を取り出します。 ”ご自身で課題を考えてそれを解いてみよう”という方法が 必ずしも間違っているわけではないでしょうが、そもそもの課題が 適当なのかどうかを判断できるレベルの人が身近におられないとなると 正しい方向に進むことは難しいと思われます。 私は、具体的な文字列を取り出すようなソースコードを提供することはしません。 こう書くと、私に基本的なファイル処理の能力がないのだろうと感じられるかもしれません。 しかし私自身は、紙テープ,マークシート,8インチフロッピーディスクの時代から コンピュータプログラミングを書いていたので、ファイル入出力のコードなどは、 山ほど書き捨ててきました。 オブジェクト指向設計の今の時代に、書き捨てのコードを書く気にならない 気持ちをご理解頂ければ幸いです。 この気持ちが解る様になったら、オブジェクト指向の発想が身に付いたと 言えるのかもしれません。

aabbccddzz
質問者

お礼

何度もアドバイスありがとうございます。 私のプログラムに対する知識のなさは、就職先に理由がありました。文字の世界とは不思議なものです。 私が上記のように言われるのも、予想しておりました。しかし、どなたかアドバイスしてくださるかと思い,迷いまがらも、この場で質問さえていただきました。 上記の回答者の方を含め、アドバイスをしてくださった方には感謝の気持ちでいっぱいです。 今までいくつかの言語が授業でありましたが、その中でJAVAは一番楽しめたかと思っております。難しいことにはかわらりありませんでしたが、しかし楽しんでできるか、できないかで理解は大きく違いますね。 余計な話を申し訳ありません。最後とは残念ですが、今までのアドバイス本当にありがとうございました。

関連する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
  • テキストファイルから文字列を読み込み!!

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

  • javaでの文字列からの数字抽出

    文字列内の数字だけを取り出したいとおもっています。 たとえばファイル内からreadline()で読み込んだ文字列が [0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637] だったならば 配列内に {0,0,-0.34063,0.0756989,-0.362579,0.118652,-0.36264,0.118637 } のように格納したいのですが可能なんでしょうか? "["や空白のようなものを削除して数字だけを取り出したいのです。 現在はこのようにファイルの文字列を取得しています FileReader fr = new FileReader(inputpath); BufferedReader br = new BufferedReader(fr); String read = br.readLine(); よろしくお願いします。

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

    "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
  • 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でファイル操作し検索するものを作ってます

    目的はテキストファイル内の文字列に検索をかけヒットしたものを表示する というものです import java.io.*; class kensakuTest{ public static void main(String[] args)throws IOException{ System.out.println("検索方法を選択してください。\n0:学籍番号で検索\n1:名前で検索\n2:出身地で検索"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //0が選択された場合 if(res == '0'){ System.out.println("学籍番号を入力してください。"); BufferedReader bn = new BufferedReader(new InputStreamReader(System.in)); String str0 = fn.readLine(); char num = str0.charAt(0); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; while((tmp=breader.readLine())!=null){ //完全一致 if(){ System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //1が選択された場合 if(res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); char name = str1.charAt(0); try{ FileReader freader = new FileReader("data.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 //部分一致 while((tmp=breader.readLine())!=null){ if(tmp.indexOf(str1) > -1){ System.out.println("結果は:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2'){ System.out.println("出身地を入力してください。"); BufferedReader bl = new BufferedReader(new InputStreamReader(System.in)); String belong = bl.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; while((tmp=breader.readLine())!=null){ //完全一致 if(){ System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } } } 現状はここまでできましたが完全一致の検索のやり方がわかりません。 あと問題点があるのですが 読み取るファイルがこのような場合 2000,田中 太郎,福島県 2001,福島 太郎,東京都 名前で福島 と検索をかけたとします この場合答えが 2000,田中 太郎,福島県 2001,福島 太郎,東京都 と表示されてしまいます このカンマで区切られている学籍番号、名前、出身地をうまく分け それぞれ判別する方法はないのでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • 行単位の文字列処理

    JAVA初心者です。 以下のようなファイル形式があります。 ファイル名(TEXT.TXT) //////////////////////////////////// Aa BFUNC1,abc,def Ab BFUNC2,ghi BFUNC3 /////////////////////////////////// ファイル行単位の先頭(1文字目)に処理の判定識別子が付きます。 A:2文字目の文字を既存の設定してある文字と置き換える。 B:,で区切り最初が関数名次からが引数になります。(例FUNC1(abc,def)) 上記をJAVAで記述したい場合どのようにしたらいいでしょうか? FileReader in = new FileReader("TEST.TXT"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { /*行単位の先頭一文字をチェック*/ switch(){  ←行単位の先頭一文字を判定するには記述するには?  CASE: "A": /*文字列置換*/ br.replace(str ,br); break; CASE:"B": /*方法(1)","で分解して連結する。最初はNextTokenで文字列を連結 させ、次に"("をつけ、次からNextTokenで","をつけていく。","がな くなったら")"をつけるようにするには? */   /*方法(2)","の最初は関数名なのでNextTokenで(1)と同様に"("をつけ    る。次からは行末尾までを一度に連結させ、最後に")"をつけるように   するには?*/ break; } }   ?の個所を教えてください。 ほかに簡単な記述などあればそちらも教えてください。

  • はじめまして。よろしくお願いいたします。

    はじめまして。よろしくお願いいたします。 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で保存されています。 なにか回避策はございませんでしょうか。 よろしくお願いいたします。

  • テキストファイルからの読み込みエラー

    app = getServletConfig().getServletContext(); fr =new FileReader(app.getRealPath("dbsplORA.txt")); br = new BufferedReader(fr); strPar = br.readLine(); br.close(); このような感じで、テキストファイルからの読み込みを行っていますが,なぜかいつもファイルが見つかりませんといわれます. ファイル自体はちゃんと名前も全半角あっています。 エラーメッセージに出ているものをコピーして貼り付けると動作します。 今回、Noを振り分け,ループしてたくさんのファイルを読み込もうと考えていますが,これのおかげで作成できません。 すみませんが、教えてもらえないでしょうか。 そして、今,仮ループで貼り付けて動かしていますが、最後らへんのテキストを読むとMalformedInputExceptionがでます。 ちなみに、ループで読み込みという意味は strBan = "dbsql"+strBan+".txt";//strBanはカウンターされている。 という意味です。よろしくお願いします。

    • ベストアンサー
    • Java
  • ストリーム テキスト

    初心者の質問です。よろしくお願いします。 Javaのストリームを勉強しているのですが、FileReaderでテキストファイル(txt)を入力するにはどうすれば良いのでしょうか? Javaファイルは正しく入力できたのですが。 FileReader fr=new FileReader(args[0]);では、問題があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう