Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取文件的EOFEException_Java_Eofexception - Fatal编程技术网

Java 读取文件的EOFEException

Java 读取文件的EOFEException,java,eofexception,Java,Eofexception,输出是正确的,但后面跟着一个EOFEException。我读了文档,但仍然不知道如何解决这个问题 try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file.bin"))){ for(Ser s = (Ser)ois.readObject(); s!=null; s=(Ser)ois.readObject() ) System.out.println(s); }catch (IOE

输出是正确的,但后面跟着一个EOFEException。我读了文档,但仍然不知道如何解决这个问题

try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file.bin"))){
    for(Ser s = (Ser)ois.readObject(); s!=null; s=(Ser)ois.readObject() )
        System.out.println(s);
}catch (IOException | ClassNotFoundException e){
    e.printStackTrace();
}

假设
readObject
在没有数据时返回null,但实际上它抛出
eofeexception
。最简单的修复方法就是捕获异常:

try(...) {
    for(;;) {
        Ser s = (Ser)ois.readObject();
        System.out.println(s);
    }
} catch(EOFException e) {
    // normal loop termination
} catch(IOException | ClassNotFoundException e){
    // error
}

注意,有些人和编码标准认为在非错误条件下抛出异常是不好的做法,比如在这种情况下达到输入的结束。

< P>你假设 Read Objult//Cult>如果没有数据,则返回NULL,但事实上它会抛出<代码> EOFExcExo< <代码>。最简单的修复方法就是捕获异常:

try(...) {
    for(;;) {
        Ser s = (Ser)ois.readObject();
        System.out.println(s);
    }
} catch(EOFException e) {
    // normal loop termination
} catch(IOException | ClassNotFoundException e){
    // error
}

注意,有些人和编码标准认为在非错误条件下抛出异常,如在这种情况下达到输入的末尾,是不好的做法。

一旦读取了所有对象,就停止从ObjistIdPoSt流中读取。如果不知道有多少个对象,请在将对象写入ObjectOutputStream之前将计数写入其中。如果没有大量对象,更简单的方法是编写一个数组。(不要写列表;读取列表需要不安全的强制转换。)是否正在创建
file.bin
?如果是这样,您是如何做到的?@VGR从对象流读取任何内容都需要不安全的强制转换。假装计数并不总是可行的,而且鉴于
EOFException
已经存在,这也是毫无意义的。@Fishstick如果他没有创建它,他怎么能从中读取
EOFException
呢?读取完所有对象后,停止从ObjectInputStream读取。如果不知道有多少个对象,请在将对象写入ObjectOutputStream之前将计数写入其中。如果没有大量对象,更简单的方法是编写一个数组。(不要写列表;读取列表需要不安全的强制转换。)是否正在创建
file.bin
?如果是这样,您是如何做到的?@VGR从对象流读取任何内容都需要不安全的强制转换。假装计数并不总是可行的,而且鉴于
EOFException
已经存在,这也是毫无意义的。@Fishstick如果他没有创建它,他怎么能从中读取
EOFException
呢?这是坏运气,因为这是会发生的,所以他们只能忍受它。这是坏运气,因为事情就是这样,所以他们只能忍受。