2013-06-18 35 views
1

看空分隔的記錄,我想讀取由記錄終止多的記錄,像這樣:如何在Groovy

<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中找到等效項。請注意,該文件太大而無法sl and,然後簡單地拆分。

有沒有一個優雅的方式來做到這一點在Groovy,或者我必須讀取字節每字節和「手動」中斷'\ 0'?

謝謝!

回答

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