我试图建立一个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/