我單獨測試了一下一個漢字的gbk編碼,為什么測出來長度是三,不應該是2嗎
package?com.imooc.io; import?java.io.File; import?java.io.IOException; import?java.io.RandomAccessFile; import?sun.font.CreatedFontTracker; public?class?RafDemo?{ /** ?*?@param?args ?*?@throws?IOException? ?*/ public?static?void?main(String[]?args)?throws?IOException?{ //?TODO?Auto-generated?method?stub File?demo=new?File("demo"); if(!demo.exists()){ demo.mkdir(); } File?file=new?File(demo,"raf.dat"); if(!file.exists()){ file.createNewFile(); } RandomAccessFile?raf=new?RandomAccessFile(file,?"rw"); String?s="中?"; byte[]?gbk=s.getBytes("gbk"); raf.write(gbk); System.out.println("指針的位置:"+raf.getFilePointer()); System.out.println("長度:"+raf.length()); } }
2016-05-28
我自己的解釋是你在用其他字節(jié)數(shù)多的編碼時,為那個文件開辟了更大的空間,而那個指針也在那后面,再寫一個小的字節(jié)數(shù)的時候,空間也不會變小,指針也沒回去,所以所指的還是大的那個位置
解決辦法:判斷的時候加這句話就可以了
if(!file.exists())//判斷是否存在目錄demo下的文件raf.dat
file.createNewFile();//創(chuàng)建文件raf.dat
else
file.delete();
2014-11-04
如果你用utf-8是不是 就說4個字節(jié)了?
你中后面有空格,在字符串中也算字符/。
刪除試試