पढ़ने के लिए मैं एक 132 केबी फ़ाइल है (क्या तुम सच में यह नहीं कह सकते कि यह बड़ा है) की कोशिश कर रहा है और मैं स्काला आरईपीएल से इसे पढ़ने के लिए कोशिश कर रहा हूँ, लेकिन मैं क्योंकि यह पहले ही 2048 चार नहीं पढ़ सकते हैं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)
किसी भी विचार क्या गलत हो सकता है: मुझे एक java.nio.charset.MalformedInputException
अपवाद
ये कदम मैं ले रहे हैं देता है?
-
जाहिर है समस्या यह है कि फ़ाइल इनकोडिंग
मैं UTF के रूप में यह सहेजा नहीं UTF किया गया था और सब कुछ काम करता है, मैं तो बस पुनरावर्तक पर mkString जारी करने और यह फ़ाइल की पूरी सामग्री को पुन: प्राप्त
अजीब बात यह है कि त्रुटि केवल पहले 2048 वर्ण ही गुजर जगाया है ...
इस परीक्षण करने के लिए एक आसान तरीका नहीं है। यह निश्चित रूप से असली समस्या नहीं है, हालांकि, फ़ाइल में बिल्कुल '2^11 + 1' वर्णों पर पहले अवैध बाइट अनुक्रम को मारने के लिए बस एक शानदार संयोग होगा। –
यह पहली चीज है जिसने मैंने कोशिश की, पूरे इटरेटर पर एक पतला mkString। फिर मैंने इसे 2048 तक ट्रैक किया ... – opensas