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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于启会 中级黑马   /  2012-9-11 18:12  /  1424 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.RandomAccessFile;

  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;

  5. /*
  6. * 随机读写访问流
  7. */
  8. public class RandomAccessFileDemo {
  9.         public static void main(String arg[]){
  10.                 //writes();
  11.                 readers();
  12.         }
  13.         public static void readers(){
  14.                 try {
  15.                         RandomAccessFile raf=new RandomAccessFile("E:\\学习记录\\haha.txt", "r");
  16.                         raf.seek(0);
  17.                         byte[] buf=new byte[8];
  18.                         raf.read(buf);
  19.                         String name=new String(buf);
  20. int age=raf.readInt();
  21.                         System.out.println("name="+name+",age="+age);
  22.         } catch (FileNotFoundException e) {
  23.                         // TODO Auto-generated catch block
  24.                         e.printStackTrace();
  25.                 } catch (IOException e) {
  26.                        
  27.                         // TODO Auto-generated catch block
  28.                         e.printStackTrace();
  29.                 }
  30.         }
  31.         public static void writes(){
  32.                 RandomAccessFile raf=null;
  33.                 try {
  34.                         raf =new RandomAccessFile("E:\\学习记录\\haha.txt", "rw");
  35.                         raf.seek(0);
  36.                         raf.write("zhaoliu".getBytes());
  37.                         raf.writeInt(97);
  38.         } catch (FileNotFoundException e) {
  39.                         // TODO Auto-generated catch block
  40.                         e.printStackTrace();
  41.                 } catch (IOException e) {
  42.                         // TODO Auto-generated catch block
  43.                         e.printStackTrace();
  44.                 }finally{
  45.                         if(raf!=null){
  46.                                 try {
  47.                                         raf.close();
  48.                                 } catch (IOException e) {
  49.                                         // TODO Auto-generated catch block
  50.                                         e.printStackTrace();
  51.                                 }
  52.                         }
  53.                 }
  54.         }
  55. }
复制代码
读取的时候出现
java.io.EOFException
at java.io.RandomAccessFile.readInt(RandomAccessFile.java:725)
at com.RandomAccessFile.RandomAccessFileDemo.readers(RandomAccessFileDemo.java:22)
at com.RandomAccessFile.RandomAccessFileDemo.main(RandomAccessFileDemo.java:13)
这是怎么回事呢?

评分

参与人数 1黑马币 +10 收起 理由
刘芮铭 + 10 赞一个!

查看全部评分

2 个回复

倒序浏览
路径中有中文
回复 使用道具 举报
不是路径中文的问题,是你文件内容为空或长度不够,

int age=raf.readInt();这行的readInt()函数一次好像要读4个字节,你文件内容为空就会发生EOFException,因为读不够4个字节,已经超出文件末尾了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马