1

我想读取由记录终止的多行记录,如下所示:

<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>
...

我想读取文件,一次一条记录。在 perl 中,我会使用“输入记录分隔符” $/但我似乎在Groovy中找不到等效项。请注意,文件太大而不能被 slurped,然后简单地拆分。

在Groovy中是否有一种优雅的方法可以做到这一点,或者我是否必须逐字节读取并“手动”在 '\0' 上中断?

谢谢!

4

1 回答 1

2

您可以尝试像这样使用扫描仪:

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 回答