寫文件大家出現最多的是漢字知碼之類的問題,今天不是亂碼問題,是出現在大量空字元,用記事本打開是不可見的。如果用NodePad++打開則會顯示NUL 問題分題: 剛開始以為是編碼問題,試了幾個編碼發現問題依舊。後來發現在就在最後出來空字元應該是在寫文件時出現了異常。請下以下兩段代碼 //有問題的代碼t
寫文件大家出現最多的是漢字知碼之類的問題,今天不是亂碼問題,是出現在大量空字元,用記事本打開是不可見的。如果用NodePad++打開則會顯示NUL
問題分題:
剛開始以為是編碼問題,試了幾個編碼發現問題依舊。後來發現在就在最後出來空字元應該是在寫文件時出現了異常。請下以下兩段代碼
//有問題的代碼
try { FileOutputStream fos = new FileOutputStream(filePath); byte[] b = new byte[1024];while((in.read(b)) != -1){ fos.write(b); //問題在此,因為寫的時候沒設置長度每次都寫1024個位元組,導致最後不足1024個位元組也會寫入大量的空字元 } in.close(); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
//修改後的代碼
try { FileOutputStream fos = new FileOutputStream(filePath); byte[] b = new byte[1024]; int len=-1; while((len=in.read(b)) != -1){ fos.write(b,0,len);//增加起始長度 每次都寫入實際讀到的長度,所以不會出現空字元。 } in.close(); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }