What's a simple and canonical way to read an entire file into memory in Scala? (Ideally, with control over character encoding.)
The best I can come up with is:
new Scanner(new File("file.txt")).useDelimiter("\\Z").next()
val lines = scala.io.Source.fromFile("file.txt").mkString
By the way, "
scala." isn't really necessary, as it's always in scope anyway, and you can, of course, import io's contents, fully or partially, and avoid having to prepend "io." too.
The above leaves the file open, however. To avoid problems, you should close it like this:
val source = scala.io.Source.fromFile("file.txt") val lines = try source.mkString finally source.close()
Another problem with the code above is that it is horrible slow due to its implementation nature. For larger files one should use:
source.getLines mkString "\n"