我试图建立一个while循环,该循环将从RandomAccessFile读取并在到达文件末尾时停止。但是每次我尝试运行该程序时,都会出现错误。

RandomAccessFile raf = new RandomAccessFile(filename, "rw");
    final int EOF = -1;

    while(raf.readInt() != EOF){

    id = raf.readInt();
    existingMileage = raf.readInt();
    gasCost = raf.readInt();
    ndays = raf.readInt();
    rate = raf.readInt();
    totalCharge = raf.readInt();
    discount = raf.readInt();
    tax = raf.readInt();
    netCharge = raf.readInt();
    returnMileage = raf.readInt();

    }


这是我得到的错误:

Exception in thread "main" java.io.EOFException
at java.io.RandomAccessFile.readInt(Unknown Source)
at TakeHome.TakeHome.fileReaderMethod(TakeHome.java:127)
at TakeHome.TakeHome.main(TakeHome.java:20)

最佳答案

 final int EOF = -1;


你弥补了它不在Javadoc中。 readInt()方法在文件末尾不返回-1。不可以-1是带内值。它会抛出您得到的EOFException

您还将丢弃在EOF测试中读取的int,因此比预期的要早到达文件结尾。

您应该循环while (true),捕获EOFException,并在捕获时中断。

关于java - 从Java中的随机访问文件读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26578150/

10-09 08:21