InputStream을 String으로 변환하기 위해 Java에서 사용한 편리한 기능이 있습니다. 다음은 Scala로 직접 번역 한 것입니다.
def inputStreamToString(is: InputStream) = {
val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"))
val builder = new StringBuilder()
try {
var line = rd.readLine
while (line != null) {
builder.append(line + "\n")
line = rd.readLine
}
} finally {
rd.close
}
builder.toString
}
스칼라에서 이것을 수행하는 관용적 방법이 있습니까?
답변
Scala> = 2.11의 경우
scala.io.Source.fromInputStream(is).mkString
Scala <2.11의 경우 :
scala.io.Source.fromInputStream(is).getLines().mkString("\n")
거의 같은 일을합니다. 그래도 선을 얻은 다음 모두 다시 붙이고 싶은 이유는 확실하지 않습니다. 스트림이 비 차단이라고 가정 할 수 있다면을 사용 .available
하고 전체를 바이트 배열로 읽고 그로부터 직접 문자열을 만들 수 있습니다.
답변
Source.fromInputStream(is).mkString("")
증서를 할 것입니다 …..
답변
이를 수행하는 더 빠른 방법 :
private def inputStreamToString(is: InputStream) = {
val inputStreamReader = new InputStreamReader(is)
val bufferedReader = new BufferedReader(inputStreamReader)
Iterator continually bufferedReader.readLine takeWhile (_ != null) mkString
}