今天寫spark程序的時候遇到了一個問題就是,讀取文件的時候報了一個錯:“Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1”
讀取文件的代碼如下:
一看這個這個錯“nio”錯誤,第一感覺就是讀文件方法這里出了問題,於是點擊去看了一下Source.fromFile這個方法的源碼:
果然,這個方法的重載有好幾個,但是每一都直接或間接的需要指定讀取文件的編碼,就是說你需要以什么編碼去讀取你需要讀取的文件,因為我的IDEA設置的編碼時UTF-8
所以如果使用UTF-8讀取GBK文件會出現問題,如果查看一個文本文件是什么編碼的文件呢:
使用notepadd++打開該文件再右下角會看到對應的編碼格式:
說明該文件時UTF-8編碼的。
so
需要指定讀取編碼為GBK
或者
這兩中方式都可以,都是從源碼中得來的。
設置完成之后,重新運行程序,報錯消失