string scala inputstream

string - Forma idiomática de convertir un InputStream a una cadena en Scala



(3)

Para Scala> = 2.11

scala.io.Source.fromInputStream(is).mkString

Para Scala <2.11:

scala.io.Source.fromInputStream(is).getLines().mkString("/n")

hace más o menos lo mismo. Sin embargo, no estoy seguro de por qué quiere obtener líneas y luego pegarlas todas juntas. Si puede asumir que la secuencia no se bloquea, puede usar .available , leer todo en una matriz de bytes y crear una cadena a partir de eso.

Tengo una función útil que he usado en Java para convertir un InputStream en una cadena. Aquí hay una traducción directa a 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 }

¿Hay una manera idiomática de hacer esto en Scala?


Una forma más rápida de hacer esto:

private def inputStreamToString(is: InputStream) = { val inputStreamReader = new InputStreamReader(is) val bufferedReader = new BufferedReader(inputStreamReader) Iterator continually bufferedReader.readLine takeWhile (_ != null) mkString }


Source.fromInputStream(is).mkString("") también hará la escritura .....