• ベストアンサー

実行時にファイル指定するのではなくコンパイル時に指定したい。

import java.io.*; class test { public static void main(String args[]) { char ch[] = new char[128]; try { FileReader fp = new FileReader(args[0]); fp.read(ch); System.out.println(ch); } catch (IOException e) { System.out.println("例外 - " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(); } } } 以上プログラムについての質問です。 ファイルを読み込み配列に格納するプログラムです。 読み込みたいファイルをabc.txtとします。 ↑では実行時にjava test abc.txtと指定して テキストの中身を表示するのですが プログラム内に読み込むテキストをはじめからいれておきたいです。 この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? また文のはじめから終わりまで読み込んで全部出力してしまうのですが 例えば、1文だけ(改行まで)読み取る、ですとか 1文だけ読み取るのを上から順番ではなくてランダムに読み取る、などはどうやればよいのでしょうか? わかる方、ヒントだけでも結構です。 よろしく御願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

BufferedReader fp = new BufferedReader(new FileReader("abc.txt")); とかする。 fp.readLine(); する ランダムで指定された行数-1分 fp.readLine(); して 読み飛ばす

jun_o_392
質問者

お礼

なるほど、一つ目はできました。 fp.readLineについてはどこにいれたらよいのかわからないので調べてみます。 ありがとうございます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>ch[] = fp.readLine();と変更したらよいのですかね? BufferedReader には、Perlのような配列として読み込むメソッドはありません。 地道に1行ずつ読み込んで配列にいれていきます。 配列の場合、サイズが必要になりますから、 ファイルのような行数が不定(あらかじめ知ることができない)の場合 vectorを使う方がいいかもしれません。

jun_o_392
質問者

お礼

なるほど、わかりやすい説明ありがとうございます。

  • osumitan
  • ベストアンサー率33% (102/307)
回答No.3

> この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? new FileReader(args[0]); の args[0] が、 java test abc.txt の abc.txt の部分を取り出しています。 (コマンドラインのクラス名の次に続く1つ目) new FileReader("abc.txt"); とすればいいと思います。 > 例えば、1文だけ(改行まで)読み取る、ですとか  FileReader fp = new FileReader(args[0]);  fp.read(ch); の部分を  BufferedReader fp = new BufferedReader(new FileReader("abc.txt")); と変えて  String s = fp.readLine(); とすれば、1行を読み込みます。 これを繰り返せば、順に次の行を読んでいきます。 > 1文だけ読み取るのを上から順番ではなくてランダムに読み取る、などはどうやればよいのでしょうか? ファイルは基本的に順に読んでいくことになります。 ランダムといっても、何行目まであるのかというのは 順に全体を読み終わってみないとわからないですし、 やるとしたら、1行ずつ順に読み込んでいって、 配列等に格納して、それをランダムに取り出す、 といった方法になるかと思います。

jun_o_392
質問者

補足

回答ありがとうございます。 >とすれば、1行を読み込みます。 >これを繰り返せば、順に次の行を読んでいきます。 これは読んでいくだけですよね? 読んだものを配列に格納したいのですが >String s = fp.readLine(); をch[] = fp.readLine();と変更したらよいのですかね? 今ちょっとコンパイルができない状況ですので 自宅に帰ってから試したいと思います。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? main(String args[]) の意味が解れば解決です。 >例えば、1文だけ(改行まで)読み取る、 readLine 下記URL参照 >1文だけ読み取るのを上から順番ではなくてランダムに読み取る 今後、ファイルの読込手順の理解が出来れば、実現方法が解るかと思います。

参考URL:
http://www13.plala.or.jp/kymats/study/Java/b18-0.html
jun_o_392
質問者

お礼

ありがとうございます。 参考URL読んでみます。

関連するQ&A