- ベストアンサー
実行時にファイル指定するのではなくコンパイル時に指定したい。
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文だけ読み取るのを上から順番ではなくてランダムに読み取る、などはどうやればよいのでしょうか? わかる方、ヒントだけでも結構です。 よろしく御願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
BufferedReader fp = new BufferedReader(new FileReader("abc.txt")); とかする。 fp.readLine(); する ランダムで指定された行数-1分 fp.readLine(); して 読み飛ばす
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>ch[] = fp.readLine();と変更したらよいのですかね? BufferedReader には、Perlのような配列として読み込むメソッドはありません。 地道に1行ずつ読み込んで配列にいれていきます。 配列の場合、サイズが必要になりますから、 ファイルのような行数が不定(あらかじめ知ることができない)の場合 vectorを使う方がいいかもしれません。
お礼
なるほど、わかりやすい説明ありがとうございます。
- osumitan
- ベストアンサー率33% (102/307)
> この場合どのように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行ずつ順に読み込んでいって、 配列等に格納して、それをランダムに取り出す、 といった方法になるかと思います。
補足
回答ありがとうございます。 >とすれば、1行を読み込みます。 >これを繰り返せば、順に次の行を読んでいきます。 これは読んでいくだけですよね? 読んだものを配列に格納したいのですが >String s = fp.readLine(); をch[] = fp.readLine();と変更したらよいのですかね? 今ちょっとコンパイルができない状況ですので 自宅に帰ってから試したいと思います。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? main(String args[]) の意味が解れば解決です。 >例えば、1文だけ(改行まで)読み取る、 readLine 下記URL参照 >1文だけ読み取るのを上から順番ではなくてランダムに読み取る 今後、ファイルの読込手順の理解が出来れば、実現方法が解るかと思います。
お礼
ありがとうございます。 参考URL読んでみます。
お礼
なるほど、一つ目はできました。 fp.readLineについてはどこにいれたらよいのかわからないので調べてみます。 ありがとうございます。