1

次のように、 nullレコードで終了する複数行のレコードを読みたいと思います。

<MARQUE><AR_CP>N3</AR_CP>
<Classif>07</Classif>
<RegnT>03</RegnT>\0<MARQUE><AR_CP>O1</AR_CP>
<AR_PC>M5W 1C8</AR_PC>
<Classif>07</Classif>
<RegnT>03</RegnT>\0<MARQUE><AR_CP>Q1</AR_CP>
<Classif>07</Classif>
<RegnT>03</RegnT>
...

一度に 1 レコードずつファイルを読みたいと思います。perl では、「入力レコード セパレータ」$/を使用しますが、 Groovyで同等のものを見つけることができないようです。ファイルが大きすぎて、丸呑みしてから単純に分割できないことに注意してください。

Groovyでこれを行うためのエレガントな方法はありますか、または '\0' でバイトごとに読み取り、「手動で」ブレークする必要がありますか?

ありがとうございました!

4

1 に答える 1

2

次のように Scanner を使用してみてください。

new File( '/path/to/file.txt' ).withReader { r ->
  new Scanner( r ).with { scanner ->
    scanner.useDelimiter( ~/\00/ )
    scanner.eachWithIndex { record, idx ->
      println "Record $idx ${record.split('\n').join()}"
    }
  }
}
于 2013-06-18T20:20:24.840 に答える