dポイントプレゼントキャンペーン実施中!

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"));
という風に書くのが面倒に思っています。

宜しくお願いします。

A 回答 (3件)

順番を無視していいのと同じディレクトリの中なら



String dirString = "C:/data";
File dir = new File(dirString);
File files[] = dir.listFiles();
for (int i = 0; i < files.length; i++) {
 if (!files[i].isDirectory()) {
  BufferedReader br = new BufferedReader(new FileReader(files[i].getName()));
  // 何かの処理
  // .....
 }
}
と、言った感じですかねぇ。
    • good
    • 2
この回答へのお礼

ディレクトリ以下で取り出すこともできるんですね!
参考にさせていただきます!

お礼日時:2007/01/13 12:50

ファイル名に "a番号.txt" のような一貫性があるなら、


ファイル名を配列に入れるよりも、
下のコードのようにしたほうがよいでしょう。

for (int i = 1; i <= 100; i++) {
  String name = "a" + i + ".txt";
  BufferedReader br = new BufferedReader(new FileReader(name));
  // ... ファイルを読み込む処理
  br.close();
}

(あまり賢いやり方ではないと思いますが)
100個のファイルを同時に開く必要があるなら、
#1さんの書いたように、
BufferedReader の配列を作ればいいと思います。
    • good
    • 0
この回答へのお礼

この方法が知りたかったんです。ありがとうございます!

お礼日時:2007/01/13 12:49

百個のファイルを同時に開いておく必要はありますか?


あるのだったら。

String[] names = {
"a1.txt",
"a2.txt",
...
"a100.txt"
};

BufferedReader[] br = new BufferedReader[100];
for(int i=0; i<100; i++) {
 br[i] = new BufferedReader(new FileReader(names[i]));
}
// 処理
for(int i=0; i<100; i++) {
 br[i].close();
}

ただはっきり言って、100もファイルを開くと重いのでお勧めしません。
一つずつで良ければ

for(int i=0; i<100; i++) {
 BufferedReader br = new BufferedReader(new FileReader(names[i]));
 // 処理
 br.close();
}

これで良いでしょう。
    • good
    • 0
この回答へのお礼

なるほど!参考にさせていただきます!

お礼日時:2007/01/13 12:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!