2016-05-10 133 views
3

我正在嘗試使用流來讀取文件,但我無法通過異常。我一直在環顧四周,但我不明白爲什麼它被拋出。Java 8使用流讀取文件java.io.UncheckedIOException

我要閱讀的文件是file.txt,它使用UTF-8編碼。

我讀它使用Files.lines()

String path = FileWordCount.class.getResource("file.txt").getPath().substring(1); 

Files.lines(Paths.get(path), Charset.forName("UTF-8")).forEach(System.out::println); 

當試圖讀取我收到以下異常文件:

Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 
[...] 
Caused by: java.nio.charset.MalformedInputException: Input length = 1 

通常情況下,我不張貼關於異常,但我簡單的問題只是把這個弄出來。

+0

這可能是相關的:http://stackoverflow.com/questions/26268132/all-inclusive-charset-to-avoid-java-nio-charset-malformedinputexception-input? – macias

回答

3

UncheckedIOException包裝MalformedInputException - 這是統一的錯誤。該JavaDoc中說:

經過檢查的異常當輸入字節序列是不合法的 定字符集,或者輸入字符序列不是合法的 16位Unicode序列時,拋出。

因此,您的file.txt不包含有效的UTF-8並導致UTF-8解碼器報告錯誤。