阅读及;用Scala编写文本,获得正确的编码?
我正在用Scala读写一些文本文件。作为这门语言的完全初学者,我想确保找到正确的方法,例如正确编码 因此,我推荐的大部分内容都使用了阅读及;用Scala编写文本,获得正确的编码?,scala,file,text,encoding,io,Scala,File,Text,Encoding,Io,我正在用Scala读写一些文本文件。作为这门语言的完全初学者,我想确保找到正确的方法,例如正确编码 因此,我推荐的大部分内容都使用了io.Source.fromFile val user_list = Source.fromFile("usernames.txt").getLines.toList val user_list = Source.fromFile("usernames.txt", enc="UTF8").getLines.toList 我看了一下报告,但还剩下一些问题 正确使用编
io.Source.fromFile
val user_list = Source.fromFile("usernames.txt").getLines.toList
val user_list = Source.fromFile("usernames.txt", enc="UTF8").getLines.toList
我看了一下报告,但还剩下一些问题
正确使用编码方法:
- 文档显示,我可以像上面尝试的那样在
中设置编码。看着上面的人和上面列出的人,我想知道这些是否都是我的编解码器选项——是否有Utf-16、Big-Endian vs-Little-Endian等Source.fromFile
- 我有点痴迷于此,因为它过去常常让我在Python中陷入困境。出于某种原因,Scala不太关心这个问题吗
- 我看到的所有示例都使用了
方法,并使用getLines
或MkString
等对其进行后处理。与一次性读取整个文件(我的文件很小)相比,这有什么好处吗List
- 我能找到的每一个源代码都告诉我Scala没有文件写入功能,只能使用Java
。我对此感到惊讶——这仍然准确吗李>FileWriter
谢谢 Scala在标准库中只有一个基本的IO api。在大多数情况下,您只需要使用JavaAPI。一个来自java的体面api的存在可能就是Scala团队没有优先考虑拥有一个健壮且功能齐全的IO api的原因 不过,您也可以使用第三方scala库。我从未使用过但听说过Scala文件api的优点。以及提供功能强大的流式IO。我肯定还有其他人 对于编码,有许多可能的编码可用。只是,只有两个最常见的字段可以作为静态字段使用,其余字段通常通过
编解码器(“编码名称”)
访问。大多数API还允许您直接输入字符串,而无需首先获取编解码器实例。编解码器实际上只是java.nio.charset.charset
的包装器。您可以运行java.nio.charset.charset.availableCharsets()
查看系统上可用的所有编码
至于读取,如果文件很小,您可以将它们完全加载到内存中,如果您愿意的话。不这样做的唯一原因是,如果逐行读取就足够了,那么要避免一次性加载整个文件的额外内存使用。出于效率原因,您可能希望使用Vector而不是List(Vector在许多情况下更好,并且应该作为默认集合使用,但传统和旧习惯很难改变,大多数人/指南似乎默认使用List,但这是一个完全不同的主题)您是否将Java属性
file.encoding设置为UTF-8
?看见