我有一个132 kb的文件(你不能说它很大),我试图从Scala REPL读取它,但我无法读取过去的2048字符,因为它给我一个java.nio.charset.MalformedInputException
例外MalformedInputException尝试读取整个文件时
这是我采取的步骤:
val it = scala.io.Source.fromFile("docs/categorizer/usig_calles.json") // this is ok
it.take(2048).mkString // this is ok too
it.take(1).mkString // BANG!
java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:277)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
任何想法可能是错误的?
-
显然的问题是,该文件没有UTF编码
我保存为UTF和一切正常,我只是发表关于迭代器mkString并获取文件的全部内容
奇怪的是,该错误只引起穿透第一2048个字符...
有测试这一个简单的方法:尽量取第一次2049元。然而,这确实不是真正的问题,只是将刚好在'2^11 + 1'字符处的第一个非法字节序列发送到文件中将是非常巧合。 –
这是我尝试的第一件事,整个迭代器上的plak mkString。然后我把它追踪到2048 ... – opensas