黑马程序员技术交流社区

标题: JAVA存储文件的问题 [打印本页]

作者: 行如止水    时间: 2013-8-25 09:55
标题: JAVA存储文件的问题
本帖最后由 行如止水 于 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);
复制代码
但是会出现错误,所以想请教一下各位大牛!

作者: yangjie    时间: 2013-8-25 11:24
按String name = "zhangsan"这句,可以先转成字节数组再看数组长度。name.getBytes().length
不带参数的getBytes()用的是系统默认编码,中文不同编码的字节数不一样,可以在getBytes的参数里指定你想用什么编码转换。
作者: 以防万一    时间: 2013-8-30 00:33
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决
详情参考:如何更改分类

保持队形,谢谢合作
{:soso_e181:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2