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:

scala.io.Source.fromPath("file.txt").getLines.reduceLeft(_+_)

or am I supposed to use one of Java’s god-awful idioms, the best of which (without using an external library) seems to be:

import java.util.Scanner
import java.io.File
new Scanner(new File("file.txt")).useDelimiter("\\Z").next()

From reading mailing list discussions, it’s not clear to me that scala.io.Source is even supposed to be the canonical I/O library. I don’t understand what its intended purpose is, exactly.

… I’d like something dead-simple and easy to remember. For example, in these languages it’s very hard to forget the idiom …

Ruby    open("file.txt").read
Ruby    File.read("file.txt")
Python  open("file.txt").read()

19 Answers
19

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *