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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘凯 金牌黑马   /  2013-2-23 14:25  /  1622 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘凯 于 2013-2-25 02:56 编辑

import java.io.*;
class RandomAccessTest
{
public static void main(String[] args)
{
  RandomAccessFile raf = null;
  try
  {
   raf = new RandomAccessFile("Test.txt","rw");
  write(raf);
   read(raf);
  }
  catch (Exception ioe)
  {
   throw new RuntimeException("初始化失败");
  }
  finally
  {
   try
   {
    if(raf!=null)
     raf.close();
   }
   catch (IOException ioe)
   {
    throw new RuntimeException("读写流关闭失败");
   }
  }
}
public static void write(RandomAccessFile raf)
{
  try
  {
   raf.write("张三".getBytes());
   raf.writeInt(33);
   raf.writeChar('男');
   raf.write("李四".getBytes());
   raf.writeInt(33);
   raf.writeChar('男');
  }
  catch (IOException ioe)
  {
    throw new RuntimeException("写失败");
  }
}
public static void read(RandomAccessFile raf)
{
  try
  {
   byte[] buf = new byte[4];
   raf.seek(10);
   raf.read(buf);
   String name = new String(buf);
  int age = raf.readInt();
  char sex = raf.readChar();
   System.out.println("姓名:"+name+" 年龄:"+age+"性别:"+sex);   
  }
  catch (IOException ioe)
  {
   throw new RuntimeException("读失败");
  }
}
}


程序报异常  : 读失败
然而将上面代码红色标记的
write(raf);
read(raf);

注释read(raf);编译执行一遍 先写入
再注释write(raf);编译再执行 读出
就没问题

这是在说
一个RandomAccessFile流 不能够再一次执行中 对同一个文件 写和读 都执行么?
求高手解答



4 个回复

倒序浏览
我不明白你的问题,你能再说明白点吗?
回复 使用道具 举报
黑马刘杰 发表于 2013-2-24 09:29
我不明白你的问题,你能再说明白点吗?

就是说上边的代码为什么的回报异常  编译失败  也就是这句  throw new RuntimeException("读失败");
执行了
回复 使用道具 举报
我看没问题啊,在我机器上没有问题,直接把李四的信息打印出来了
回复 使用道具 举报
黑马刘杰 发表于 2013-2-24 15:06
我看没问题啊,在我机器上没有问题,直接把李四的信息打印出来了

嗯,  又试了下 可以 不知道为啥刚写出来的时候总是报异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马