java8 - java.nio.charset.MalformedInputException: Input length = 2
問題描述
問題解答
回答1:public static void main(String[] args) throws IOException {File file = new File('/home/yangxiaohuan/Documents/TokenizeThenSplitParallelDeletePatternLTZero.txt');InputStreamReader read = new InputStreamReader(new FileInputStream(file), 'UTF-8');// 考慮到編碼格式BufferedReader br = new BufferedReader(read);int cnt=0;while(br.ready()){ String text = br.readLine(); cnt++; if(cnt>=47334){System.out.println(text);} System.out.println('cnt = '+cnt); }}}
原來的代碼需要導入下面的類import java.nio.file.Files;import java.nio.file.Paths;但是換成這種形式import java.io.File;import java.io.FileInputStream;就是正常的,沒有出錯。而且還有朋友說,將原來的文本里面,將出錯的那一行,刪去一個字符也是不會報錯的。很奇怪的問題。不知道為啥用nio.file.Files就是有問題的
回答2:謝邀。你可能搞錯了IO和NIO之間的區別,最基本的一點是IO是面向流的,NIO面向緩沖區的,而你的代碼很明顯是使用了BufferedReader以及InputStreamReader流,如果使用nio,readLine根本不能讀取,NIO只能讀取緩沖區,掃描緩沖區的大小,并且在解析數據時,比起阻塞IO流,NIO需要付出更大的代價。
相關文章:
1. 請教使用PDO連接MSSQL數據庫插入是亂碼問題?2. node.js - nodejs開發中常用的連接mysql的庫3. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題4. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處5. 視頻文件不能播放,怎么辦?6. 黑客 - Python模塊安全權限7. mysql - 把一個表中的數據count更新到另一個表里?8. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?9. python - 數據與循環次數對應不上10. mysql 查詢身份證號字段值有效的數據
