Groovyでファイルを行単位で処理する

javaだと

ソース
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileSample {
   public static void main(String[] args) {
      BufferedReader bufferFile = null;
      try {
         bufferFile = new BufferedReader(
                          new FileReader(".\\testdata\\readLine.txt"));
          while(true){
             String line = null;
             line = bufferFile.readLine();
             if(line == null){
                 break;
             }
             System.out.println("line:"  + line);

          }
      } catch(FileNotFoundException e) {
         e.printStackTrace();
      } catch(IOException e) {
         e.printStackTrace();
      } finally {
         if(bufferFile != null) {
            try {
               bufferFile.close();
            } catch(IOException e) {
               e.printStackTrace();
            }
         }
      }
   }
}

メンドクサイ

結果
[D:\workspace\groovy_SandBox]java FileSample
line:readLine
line:
line:public String readLine()
line:                throws IOException
line:
line:    テキスト行を読み込みます。1 行の終端は、改行 ('\n') か、復帰 ('\r')、または復行とそれに続く改行のいずれかで認識されます。
line:
line:    戻り値:
line:        行の内容を含む文字列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
line:    例外:
line:        IOException - 入出力エラーが発生した場合
line:

Groovy

ソース
f = new File(".\\testdata\\readLine.txt")
f.eachLine{line->
    println "line: ${line}"
}

カンタン

結果
[D:\workspace\groovy_SandBox]groovy Q151_ファイルを行単位で処理する.groovy
line: readLine
line:
line: public String readLine()
line:                 throws IOException
line:
line:     テキスト行を読み込みます。1 行の終端は、改行 ('\n') か、復帰 ('\r')、または復行とそれに続く改行のいずれかで認識されます。
line:
line:     戻り値:
line:         行の内容を含む文字列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
line:     例外:
line:         IOException - 入出力エラーが発生した場合
line:

実行環境














Groovyの詳細についてはJavadocと以下の書籍を参考にしている。

Groovyイン・アクション
Dierk Konig Andrew Glover Paul King Guillaume Laforge Jon Skeet
毎日コミュニケーションズ
売り上げランキング: 294340


問題自体は以下の書籍のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。

Rubyレシピブック 第2版 268の技
青木 峰郎 後藤 裕蔵 高橋 征義
ソフトバンク クリエイティブ
売り上げランキング: 80467


Groovyイン・アクションを読むならあった方が便利かな。

ブックストッパー

トモエ算盤
売り上げランキング: 614


Rubyレシピブックは「ほんたった」で立ててる