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:
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Groovyイン・アクション
posted with amazlet
問題自体は以下の書籍のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
Rubyレシピブック 第2版 268の技
posted with amazlet
Groovyイン・アクションを読むならあった方が便利かな。



