我有一個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