Scala文件读取添加空格

时间:2012-08-07 13:06:45

标签: scala io

我正在使用

在scala中读取文件
def fileToString(that:String):String= {
    var x:String="" 
    for(line <- Source.fromFile(that).getLines){ 
        x += line + "\n"
    }
  x
  }

这适用于scala文件。但是在txt文件中,它会在每个字符之间添加空格。例如。我读了一个.txt文件并得到了这个:

C e l l E v e n t L o g(E r r o r $,E r r N u m,E r r O b j)

'E n d E r r o r a n d l i n g b l o c k。

E n d S u b

我在scala文件中读到该程序,它正常出现

编辑:这似乎与编码有关。当我将其更改为UTF-16时,它会读取.txt文件,但不会读取scala文件。有没有办法让它普遍起作用?

3 个答案:

答案 0 :(得分:5)

不,它不适用于所有文件。要读取/解释文件/数据,您需要知道格式/编码,除非您将其视为二进制blob。

以通常的unicode格式(UTF-8)保存所有文件或在读取文件时指定编码。
FromFile采用隐式编解码器,您可以明确地传递它。

io.Source.fromFile("123.txt")(io.Codec("UTF-16"))

答案 1 :(得分:1)

通常,如果您从文件中读取,则需要知道其编码才能正确读取字符。我不确定Scala假设的默认编码是什么,可能是UTF8,但您可以将Codec传递给fromFile,或者将编码指定为字符串:

io.Source.fromFile("file.txt", "utf-8")

答案 2 :(得分:0)

很难确定,但听起来这两个文件是用不同的编码编写的。在任何Unix系统(包括Mac)上,您都可以使用命令od查看文件中的实际字节。

UTF-8是大多数系统上普通文本文件的标准,但如果您混合使用UTF-8和UTF-16,则必须知道哪些编码用于哪些文件并正确指定编码

或者在创建文件时要更加小心,以确保它们的格式相同。