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