Mam plik 132 kb (nie można tak naprawdę powiedzieć, że jest duży) i próbuję go odczytać z REPL Scala, ale nie mogę odczytać po 2048 char, ponieważ daje mi java.nio.charset.MalformedInputException
wyjątekWykryto wyjątek MalformedInputException podczas odczytu całego pliku
są to kroki biorę:
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)
Każdy pomysł co może być nie tak?
-
Najwyraźniej problemem było to, że plik nie został zakodowany w UTF
Uratowałem go jako UTF i wszystko działa, po prostu wydać mkString na iteracyjnej i pobiera całą zawartość pliku
Najdziwniejsze jest to, że tylko błąd wzbudził przejściu pierwszych 2048 znaków ...
Jest to łatwy sposób, aby przetestować to: spróbuj przy 2049 elementów po raz pierwszy. Z pewnością nie jest to jednak prawdziwy problem - samo trafienie w pierwszą nielegalną sekwencję bajtów z dokładnie 2 + 11 + 1 znakami w pliku byłoby fantastycznym zbiegiem okoliczności. –
To pierwsza rzecz, którą wypróbowałem, mintString na całym iteratorze. Potem wyśledziłem to do 2048 ... – opensas