java8 - java.nio.charset.MalformedInputException: Input length = 2
問(wèn)題描述
問(wèn)題解答
回答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); }}}
原來(lái)的代碼需要導(dǎo)入下面的類import java.nio.file.Files;import java.nio.file.Paths;但是換成這種形式import java.io.File;import java.io.FileInputStream;就是正常的,沒(méi)有出錯(cuò)。而且還有朋友說(shuō),將原來(lái)的文本里面,將出錯(cuò)的那一行,刪去一個(gè)字符也是不會(huì)報(bào)錯(cuò)的。很奇怪的問(wèn)題。不知道為啥用nio.file.Files就是有問(wèn)題的
回答2:謝邀。你可能搞錯(cuò)了IO和NIO之間的區(qū)別,最基本的一點(diǎn)是IO是面向流的,NIO面向緩沖區(qū)的,而你的代碼很明顯是使用了BufferedReader以及InputStreamReader流,如果使用nio,readLine根本不能讀取,NIO只能讀取緩沖區(qū),掃描緩沖區(qū)的大小,并且在解析數(shù)據(jù)時(shí),比起阻塞IO流,NIO需要付出更大的代價(jià)。
相關(guān)文章:
1. objective-c - ios百度地圖定位問(wèn)題2. html5 - 如何解決bootstrap打開(kāi)模態(tài)modal窗口引起頁(yè)面抖動(dòng)?3. javascript - 求助關(guān)于js正則問(wèn)題4. javascript - node.js服務(wù)端渲染解疑5. javascript - 求助這種功能有什么好點(diǎn)的插件?6. html5 - rudy編譯sass的時(shí)候有中文報(bào)錯(cuò)7. html - css 如何添加這種邊框?8. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?9. 微信開(kāi)放平臺(tái) - Android調(diào)用微信分享不顯示10. javascript - 關(guān)于定時(shí)器 與 防止連續(xù)點(diǎn)擊 問(wèn)題
