黑马程序员技术交流社区

标题: RandomAccessFile的问题 [打印本页]

作者: 于启会    时间: 2012-9-11 18:12
标题: RandomAccessFile的问题
  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)
这是怎么回事呢?


作者: 尤圣回    时间: 2012-9-11 18:22
路径中有中文
作者: 宁振庄    时间: 2012-9-11 19:33
不是路径中文的问题,是你文件内容为空或长度不够,

int age=raf.readInt();这行的readInt()函数一次好像要读4个字节,你文件内容为空就会发生EOFException,因为读不够4个字节,已经超出文件末尾了




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