2011-11-30 85 views
1

我有一個字節[],我需要做的是逐行讀取內容。在Java中,我們可以通過將其轉換爲BufferedReader來獲得。但是如何使用Groovy Script來實現呢?從Groovy的byte []中逐行讀取文件內容

+0

您在標題中說_「閱讀文件內容_」,但不要在問題中提及文件...您準備做什麼?我的回答覆蓋了嗎? –

+0

是的,你給了我預期的結果。真的非常感謝您的支持。你能告訴我關於第二種方法,即「def input ='''| A small ae:æ | and o with stroke:ø'''stripMargin()」 – Palani

+1

'stripMargin' [只是多行文字](http://groovy.codehaus.org/groovy-jdk/java/lang/String.html#stripMargin%28%29)在源代碼 –

回答

4

使用的電源Groovy JDK

new ByteArrayInputStream(arr).eachLine('UTF-8') { line -> 
    println line 
} 

注意:如果你需要一個1:字節字符之間1映射(對於爲例當處理二進制數據時),使用iso-8859-1作爲編碼。

2

你可以這樣做(檢查編碼作品):

def input = '''|A small ae: æ 
       |And an o with stroke: ø'''.stripMargin() 

println "Input is:" 
println input 

// Get the bytes for the input 
byte[] arr = input.getBytes('UTF-8') 

然後,閱讀此字節數組的每一行,你只需要做:

println "Output is:" 
new InputStreamReader(new ByteArrayInputStream(arr), 'UTF-8').with { 
    eachLine { line -> 
    println line 
    } 
} 
+0

+1中正確使用編碼。我想建議在未來的開始避免這個簡單的例子 - 編碼應該始終提供。如果你需要1:1的映射,請使用'iso-8859-1' –

+2

還要注意,你可以使用'new ByteArrayInputStream(arr).eachLine('UTF-8'){line - > println line}' –

+0

@AaronDigulla不錯的選擇!如果您將其作爲答案發布,我會將其投票,因爲它比我的建議更好。按照我的意見,剔除我的第一部分代碼...忽略編碼是失敗的途徑... –