2011-11-30 5 views
1

바이트 []가 있습니다. 내용을 한 줄씩 읽어야합니다. 자바에서는 이것을 BufferedReader로 변환하여 얻을 수 있습니다. 그러나 Groovy Script를 사용하여이를 수행하는 방법은 무엇입니까?파일 내용 읽기 Groovy에서 byte []의 라인 단위로 읽기

+0

제목에 _ "파일 내용 읽기"_라고 말한 다음 질문에있는 파일을 참조하지 마십시오. 정확히 무엇을하려하고 있습니까? 내 대답이 그것을 다루고 있습니까? –

+0

예, 예상 한 결과를 주셨습니다. 지원해 주셔서 정말로 감사드립니다. 두 번째 방법에 대해 제게 말해 주시겠습니까? "def input = '' '작은 AE : | 그리고 스트로크가있는 경우 : ø' ''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 
} 

참고 : exampl에 대한 (바이트와 문자 사이의 1 매핑 : 당신은 일을해야하는 경우 e 바이너리 데이터 처리시) 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

또한 새로운 ByteArrayInputStream (arr) .eachLine ('UTF-8 ') {line-> println line}' –

+0

@AaronDigulla 좋은 대안! 답변으로 게시하면 제안보다 좋기 때문에 투표 할 것입니다. 내가 동의하는 것처럼 코드의 첫 번째 비트를 뽑아 내십시오 ... 인코딩을 무시하면 실패하는 경로입니다 ... –