为了账号安全,请及时绑定邮箱和手机立即绑定

我单独测试了一下一个汉字的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());
	}

}


正在回答

3 回答

我自己的解释是你在用其他字节数多的编码时,为那个文件开辟了更大的空间,而那个指针也在那后面,再写一个小的字节数的时候,空间也不会变小,指针也没回去,所以所指的还是大的那个位置

解决办法:判断的时候加这句话就可以了

if(!file.exists())//判断是否存在目录demo下的文件raf.dat

file.createNewFile();//创建文件raf.dat

else

file.delete();


0 回复 有任何疑惑可以回复我~

如果你用utf-8是不是 就说4个字节了 

你中后面有空格,在字符串中也算字符/。

删除试试

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信