• ベストアンサー

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

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

  • ベストアンサー
  • justraver
  • ベストアンサー率30% (62/201)
回答No.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()));   // 何かの処理   // .....  } } と、言った感じですかねぇ。

kanari501
質問者

お礼

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

その他の回答 (2)

  • Gishi
  • ベストアンサー率57% (11/19)
回答No.2

ファイル名に "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 の配列を作ればいいと思います。

kanari501
質問者

お礼

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

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

百個のファイルを同時に開いておく必要はありますか? あるのだったら。 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(); } これで良いでしょう。

kanari501
質問者

お礼

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

関連するQ&A