Java WriteInt()似乎无法正常工作

Java WriteInt()似乎无法正常工作,java,binary,persistence,Java,Binary,Persistence,我有一个函数,用于将文本文件的内容写入二进制文件。当overwrite为true时,代码可以正常工作,但当overwrite为false时,它会在第80行停止(oldCount=binaryInput.readInt();)并抛出null异常。我是Java新手,所以我可能正在做一些显而易见的事情。下面是堆栈跟踪:java.io.EOFException 位于java.io.DataInputStream.readInt(未知源) 位于java.io.ObjectInputStream$Block

我有一个函数,用于将文本文件的内容写入二进制文件。当overwrite为true时,代码可以正常工作,但当overwrite为false时,它会在第80行停止(oldCount=binaryInput.readInt();)并抛出null异常。我是Java新手,所以我可能正在做一些显而易见的事情。下面是堆栈跟踪:java.io.EOFException 位于java.io.DataInputStream.readInt(未知源) 位于java.io.ObjectInputStream$BlockDataInputStream.readInt(未知源) 位于java.io.ObjectInputStream.readInt(未知源) 位于Converter.fromText(Converter.java:80) 在Tron_Class.main(Tron_Class.java:19)

public static int fromText(字符串TextRefReference、字符串BinaryRefReference、布尔覆盖){
如果(!(新文件(BinaryRefreference).exists())overwrite=true;
缓冲读取器输入;
ObjectOutputStream输出;
ObjectInputStream二进制输入;
整数计数=0;
试一试{
输入=新的BufferedReader(新的文件读取器(TextRefReference));
字符串[]数据=null;
int oldCount=0;
如果(!覆盖){
binaryInput=newObjectInputStream(newFileInputStream(BinaryRefReference));
oldCount=binaryInput.readInt();
数据=新字符串[旧计数];
int i;
对于(i=0;i
此循环不正确

    int i = 0;
    for(; i < count;i++){

那么上面的循环将有正确的
计数

哪一个是第80行?您是否考虑过使用DataInput/OutputStream,因为您似乎不需要ObjectInput/OutputStream?对不起。我想它会给他们编号的。第80行是:oldCount=binaryInput.readInt();。如果override为true,为什么要设置两次
input
?是否可以包含堆栈跟踪,因为我怀疑错误在于该行上有一个损坏的文件,而不是空值。这并没有解决问题。它仍然在行“oldCount=binaryInput.readInt();”@OsmuimShield不看堆栈跟踪如何知道它是哪一行?在调试器中可以看到
binaryInput
null
?我在没有堆栈跟踪的情况下使用断点查找它跳转到catch块的位置。我找到了堆栈跟踪。我想。java.io.ObjectInputStream$BlockDataInputStream.readInt(未知源代码)java.io.ObjectInputStream.readInt(未知源代码)java.io.ObjectInputStream.readInt(未知源代码)java.io.EOFEException位于Tron_Class.main(Tron_Class.java:19)@OsmuimShield的java.io.DataInputStream.readInt(未知源代码)处Tron_Class.main(Tron_Class.java:19)处的Converter.fromText(Converter.java:80)处,因此。
    int i = 0;
    for(; i < count;i++){
output.writeInt(oldCount + count);