scala scala-2.8

¿Cuál es la forma correcta de usar scala.io.Source?



scala-2.8 (3)

En aras de la exhaustividad

val testTxtSource = scala.io.Source.fromFile("test.txt") val str = testTxtSource.mkString() testTxtSource.close()

Debería hacer las cosas.

En muchos ejemplos, se describe que puede usar scala.io.Source para leer un archivo completo como este:

val str = scala.io.Source.fromFile("test.txt").mkString()

Pero el cierre de la corriente subyacente no se menciona. ¿Por qué Scala no proporciona una manera conveniente de hacerlo, como con la cláusula en Python? Parece útil pero no difícil.

¿Hay alguna otra forma mejor de hacerlo de manera segura en Scala, que significa leer un archivo completo?


La biblioteca io de Scala fue simplemente pirateada para proporcionar soporte para necesidades limitadas. Se hizo un esfuerzo para proporcionar una biblioteca de io bien pensada a Scala, que actualmente está alojada en assembla , con un repositorio de github también.

Si va a usar la E / S para algo más que leer el archivo ocasional en procesos de corta duración, es mejor que use las bibliotecas de Java o que vea el soporte de E / S actualmente disponible en el compilador (lo que requerirá de una escala). -compiler.jar para ser distribuido con la aplicación).

En cuanto a la administración automática de recursos, consulte esta pregunta o esta biblioteca (que aparece en la respuesta aceptada de esa pregunta).


Recomiendo usar el uso , lo que hace que su código sea más ordenado y más confiable.

using(Source.fromFile("test.txt")){ _.mkString()}