A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 行如止水 中级黑马   /  2013-8-25 09:55  /  963 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 行如止水 于 2013-8-30 10:00 编辑

现有这样一段代码:
  1. //写入第一条数据
  2.                 String name = "zhangsan";
  3.                 int age = 30;
  4.                 raf.writeBytes(name);
  5.                 raf.writeInt(age);
  6.                 //写入第二条数据
  7.                 name = "lisi";
  8.                 age = 31;
  9.                 raf.writeBytes(name);
  10.                 raf.writeInt(age);
  11.                 //写入第三条数据
  12.                 name = "wangwu";
  13.                 age = 32;
  14.                 raf.writeBytes(name);
  15.                 raf.writeInt(age);
复制代码
我想知道这三个String在文件中各占多少字节,是怎么存的,我想他们不可能都是占8个字节!

我读文件的代码是这样的:
  1. byte b[] = null;        //定义字节数组
  2.                 String name = null;
  3.                 int age = 0;
  4.                 raf.skipBytes(12);        //跨过第一个人的信息
  5.                 System.out.println("第二个人的信息:");
  6.                 b = new byte[8];
  7.                 for(int i = 0; i < 8; i++){
  8.                         b[i] = raf.readByte();
  9.                 }
  10.                 age = raf.readInt();
  11.                 System.out.println("\t|-姓名:"+new String(b));
  12.                 System.out.println("\t|-年龄:"+age);
  13.                 raf.seek(0);
  14.                 System.out.println("第一个人的信息:");
  15.                 for(int i = 0; i<8;i++){
  16.                         b[i] = raf.readByte();
  17.                 }
  18.                 age = raf.readInt();
  19.                 System.out.println("\t|-姓名:"+new String(b));
  20.                 System.out.println("\t|-年龄:"+age);
  21.                 raf.skipBytes(12);
  22.                 System.out.println("第三个人的信息:");
  23.                 for(int i = 0; i<8;i++){
  24.                         b[i] = raf.readByte();
  25.                 }
  26.                 age = raf.readInt();
  27.                 System.out.println("\t|-姓名:"+new String(b));
  28.                 System.out.println("\t|-年龄:"+age);
复制代码
但是会出现错误,所以想请教一下各位大牛!

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

2 个回复

倒序浏览
按String name = "zhangsan"这句,可以先转成字节数组再看数组长度。name.getBytes().length
不带参数的getBytes()用的是系统默认编码,中文不同编码的字节数不一样,可以在getBytes的参数里指定你想用什么编码转换。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决
详情参考:如何更改分类

保持队形,谢谢合作
{:soso_e181:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马