如何在Groovy中读取空分隔记录

如何在Groovy中读取空分隔记录,groovy,record,separator,Groovy,Record,Separator,我希望读取以空记录终止的多行记录,如下所示: <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> <R

我希望读取以空记录终止的多行记录,如下所示:

<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>
...
N3
07
03\0O1
M5W 1C8
07
03\0Q1
07
03
...
我想读这个文件,一次读一条记录。在perl中,我会使用“输入记录分隔符”$/但在Groovy中似乎找不到等效的分隔符。请注意,该文件太大,无法进行slurp,然后只进行拆分

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


谢谢大家!

您可以尝试使用如下扫描仪:

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()}"
    }
  }
}