在用到方法readUTF()是为什么老是出现EOFException异常,而且也设置了seek(0)
谁能解决一下,在网上搜罗多了,不能解决,帮助帮助

解决方案 »

  1.   

    EOFException 就是说end of file了。是不是你读完了整个文件 没有关啊 如果还在读 就会抛这个异常
      

  2.   

                    File f=null;
    RandomAccessFile raf=null;
    try{
    f=new File("G:/s/sky.txt");
    raf=new RandomAccessFile(f,"rw");
    String str=raf.readUTF();
    System.out.println(str);
    }catch(IOException e)
    {
    e.printStackTrace();

    }finally
    {

    try {
    raf.close();
    } catch (Exception e) {
    }

    }
    就是这样写的
      

  3.   

    "G:/s/sky.txt"文件里面有什么内容? 
      

  4.   

    我看了一下 确实这个方法比较诡异  就是不管你的文本是不是UTF8编码的 用readUTF去读的话 一概是EOFException  但是如果你这个文本是空的话 用writeUTF写入的话 那么是能够读出来的  所以我觉得这个readUTF方法是必须和writeUTF方法配合使用的。请看代码:
    File f = null; 
     RandomAccessFile raf = null; 
     
     try{ 
     f = new File("C:/1.txt"); 
     raf = new RandomAccessFile(f,"rw");
     
     String str1 = "我爱你中国";
     String str2 = "\n\n\n";
     String str3 = "adadasdsad";
     
     String temp = str1 + str2 + str3;
     
     String input = new String(temp.getBytes("UTF-8"),"UTF-8");
     
     raf.writeUTF(input);
     
     raf.seek(0);  String str = raf.readUTF();
     
     System.out.println(str);
     }catch(IOException e) { 
     e.printStackTrace(); 
     }finally { 
     try { 
     raf.close(); 
     } catch (Exception e) { 
     e.printStackTrace();
     } 
     }
    输出:
    我爱你中国
    adadasdsad
      

  5.   

    我按你的试了一下,是一样的效果,但是我想要是自己的文本时保存时用utf格式,应该是可以的,可却是不能,还是必须writeUTF在前,这个在文档中却没有提到
      

  6.   

    恩 是啊 文档中没写  但是如果这个文本是用writeUTF写入的 那么就能用readUTF读出 但是保存成UTF-8的 却不行 所以我也挺纳闷的
      

  7.   

    lz要先搞清楚writeUTF()做了什么.writeUTF()会先写入两个字节,内容是字符串转成utf-8字节数组后的长度.然后才写入数据.这样保证了可以通过readUTF()读取写入的每个单独的字符串.而不是整个字符串
      

  8.   

    看jdk源码,RandomAccessFile的readUTF()方法是调用的DateInputStream里面的readUTF()方法。