gpt4 book ai didi

Java 保存文件错误

转载 作者:行者123 更新时间:2023-12-02 03:49:38 27 4
gpt4 key购买 nike

抱歉,如果这是一个简单的问题,但我是 Java 编程新手,无法处理 Java 保存文件错误的问题。错误是,有时它会毫无错误地保存和加载值,有时它会发生错误。显示错误并且仍然加载。但有时保存文件不起作用。

我得到的错误:

java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Clicker.ClickerGame.LoadFile(ClickerGame.java:2479)
at Clicker.mainClass.main(mainClass.java:27)

我的主要(入门类(class)):

package Clicker;

import javax.swing.JFrame;

public class mainClass {

public static void main(String[] args) {

ClickerGame CG = new ClickerGame();

JFrame frame = new JFrame("CarCollectionarV1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

CG.addComponentToPane(frame.getContentPane());

frame.pack();
frame.setVisible(true);
frame.setResizable(true);
frame.setSize(1000, 700);

CG.LoadFile();

boolean GameLoop = true;
while(GameLoop){
CG.refresh();
CG.SaveFile();
}

}
}

ClickerGame 类(SaveFile 和 LoadFile 函数在哪里):

  public void SaveFile(){
try{
File SaveFile = new File("SaveFile.sav");
if(!SaveFile.exists()) {
SaveFile.createNewFile();
}
FileOutputStream saveFileSub = new FileOutputStream(SaveFile);
ObjectOutputStream save = new ObjectOutputStream(saveFileSub);

save.writeObject(CarMain.main);
save.writeObject(Box.boxes);
save.writeObject(CarFrame.frames);
save.writeObject(Part.parts);
save.writeObject(CarsLv1.cars);
save.writeObject(CarsLv2.cars);
save.writeObject(CarsLv3.cars);
save.writeObject(CarsLv4.cars);
save.writeObject(CarsLv5.cars);
save.writeObject(CarsLv6.cars);
save.writeObject(CarsLv7.cars);
save.writeObject(CarsLv8.cars);
save.writeObject(CarsLv9.cars);
save.writeObject(CarsLv10.cars);

save.close();
}
catch(Exception exc){
exc.printStackTrace();
}
}

public void LoadFile(){
try{
File SaveFile = new File("SaveFile.sav");
if(!SaveFile.exists()) {
SaveFile.createNewFile();
}
FileInputStream SaveFileSub = new FileInputStream(SaveFile);
ObjectInputStream load = new ObjectInputStream(SaveFileSub);

CarMain.main = (Integer[]) load.readObject();
Box.boxes = (Integer[]) load.readObject();
CarFrame.frames = (Integer[]) load.readObject();
Part.parts = (Integer[]) load.readObject();
CarsLv1.cars = (String[]) load.readObject();
CarsLv2.cars = (String[]) load.readObject();
CarsLv3.cars = (String[]) load.readObject();
CarsLv4.cars = (String[]) load.readObject();
CarsLv5.cars = (String[]) load.readObject();
CarsLv6.cars = (String[]) load.readObject();
CarsLv7.cars = (String[]) load.readObject();
CarsLv8.cars = (String[]) load.readObject();
CarsLv9.cars = (String[]) load.readObject();
CarsLv10.cars = (String[]) load.readObject();

load.close();
}
catch(Exception exc){
exc.printStackTrace();
}
}

最佳答案

您的 loadFile 方法读取的内容超出了文件内容。这就是 EOFException(文件结束异常)。

在您的 IDE 中,您可以看到行号,您将能够准确地知道您在哪一点读过:它是 ClickerGame 类中的第 2479 行(请参阅错误的堆栈跟踪)

如果我猜测,您将在保存文件之前加载该文件:因为您的加载文件会创建该文件(如果该文件不存在),那么您将创建一个空文件,然后您尝试读取该文件的内容。

关于Java 保存文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35984644/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com