Using getLines() on scala.io.Source discards what characters were used for line terminators (\n, \r, \r\n, etc.)
The following should preserve it character-for-character, and doesn't do excessive string concatenation (performance problems):
def fileToString(file: File, encoding: String) = {
val inStream = new FileInputStream(file)
val outStream = new ByteArrayOutputStream
try {
var reading = true
while ( reading ) {
inStream.read() match {
case -1 => reading = false
case c => outStream.write(c)
}
}
outStream.flush()
}
finally {
inStream.close()
}
new String(outStream.toByteArray(), encoding)
}