隨筆 - 14, 文章 - 39, 評(píng)論 - 17, 引用 - 0
          數(shù)據(jù)加載中……

          關(guān)于讀取文件內(nèi)容時(shí)報(bào)sun.io.MalformedInputException的問題 [轉(zhuǎn)]

          在網(wǎng)上找到的原因是這樣的:
          這個(gè)問題產(chǎn)生的原因是IBM在JDK 1.4版本中為了追求對(duì)io通道的高效率改變了JDK 1.3中對(duì)io通道中異常處理的策略。IBM JDK 1.4中對(duì)于io通道的異常處理更加嚴(yán)格,因此系統(tǒng)中會(huì)報(bào)上面的錯(cuò)誤。
          解決這一問題的辦法是不使用IBM JDK 1.4中默認(rèn)的io通道,而使用nio通道。具體的做法如下:
          1.打開管理控制臺(tái),找到并選擇運(yùn)行這個(gè)JSP的應(yīng)用服務(wù)器
          2.依次選擇進(jìn)程定義,java虛擬機(jī),一般JVM自變量
          3.添加-Dibm.stream.nio=true
          4.確定,保存
          5.重新啟動(dòng)該服務(wù)器

          本來我就懷疑又是IBM JDK的問題,果然被我不幸言中了,再次表示一下郁悶!

          我發(fā)現(xiàn)在我需要讀取的文件當(dāng)中存在這樣的一些亂碼字符

          我原來是用下面這段程序讀取這個(gè)文件的內(nèi)容并打印的:
          FileReader fr = new FileReader(file);
          BufferedReader br = new BufferedReader(fr);
          String str="";
          String result = "";
          while((str=br.readLine())!=null){
              result += str + "\n";
          }
          即逐行讀取的方法,我想也是一般的方法,但是就是這個(gè)readline方法導(dǎo)致了IBM JDK 1.4.2 報(bào)了這個(gè)sun.io.MalformedInputException的問題.

          我現(xiàn)在使用的解決方法如下:
          String result = "";
          StringBuffer sBuffer=new StringBuffer();
          FileInputStream fis=new FileInputStream(file);
          BufferedInputStream bis=new BufferedInputStream(fis);
          String tempStr;
          byte[] b = new byte[1024];
          int i = 0;
          while ((i = bis.read(b)) > 0) {
              tempStr=new String(b,0,i);
              sBuffer.append(tempStr);
          }
          result = sBuffer.toString();

          即逐字節(jié)讀取的方法.這樣處理就可以正常讀取了!

          具體到底為什么會(huì)出現(xiàn)這種問題現(xiàn)在還沒弄明白,估計(jì)也弄不明白了!


          posted on 2007-03-01 10:08 mlw2000 閱讀(3765) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # re: 關(guān)于讀取文件內(nèi)容時(shí)報(bào)sun.io.MalformedInputException的問題 [轉(zhuǎn)]  回復(fù)  更多評(píng)論   

          我也碰到這個(gè)問題,逐行讀取,碰到中文就報(bào)這個(gè)錯(cuò)!
          實(shí)在搞不定,現(xiàn)在換逐字符讀取試試
          2007-07-12 19:27 | kvill

          # re: 關(guān)于讀取文件內(nèi)容時(shí)報(bào)sun.io.MalformedInputException的問題 [轉(zhuǎn)]  回復(fù)  更多評(píng)論   

          好~~~
          2007-12-25 16:55 | java綜合網(wǎng)

          # re: 關(guān)于讀取文件內(nèi)容時(shí)報(bào)sun.io.MalformedInputException的問題 [轉(zhuǎn)]  回復(fù)  更多評(píng)論   

          多謝
          2011-06-16 17:40 | Monroe

          # re: 關(guān)于讀取文件內(nèi)容時(shí)報(bào)sun.io.MalformedInputException的問題 [轉(zhuǎn)]  回復(fù)  更多評(píng)論   

          3Q
          2011-11-29 16:55 | Endy

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 轮台县| 馆陶县| 合山市| 陈巴尔虎旗| 桑植县| 辽宁省| 扎兰屯市| 固镇县| 大英县| 青田县| 潞西市| 遂平县| 德钦县| 梓潼县| 湖北省| 遂川县| 镇沅| 泸西县| 长垣县| 衡东县| 苍山县| 清涧县| 中山市| 梁山县| 长阳| 上林县| 霍林郭勒市| 思茅市| 通山县| 林芝县| 樟树市| 上林县| 得荣县| 安福县| 彭州市| 晋州市| 斗六市| 巴马| 延吉市| 武胜县| 红安县|