Java SaveFile不起作用

时间:2016-03-07 16:24:44

标签: java

我是@Java编程的新手。我一直在为SaveFile工作,为我的游戏。加载和保存数据。我有两个错误:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Clicker.LoadFile.<init>(LoadFile.java:17)
at Clicker.mainClass.main(mainClass.java:21)


java.lang.NullPointerException
    at Clicker.SaveFile.<init>(SaveFile.java:17)
    at Clicker.mainClass$1.run(mainClass.java:26)
    at java.lang.Thread.run(Unknown Source)

我有MainClass,我把它放在SaveClass和LoadClass中:

package Clicker;

导入javax.swing.JFrame;

public class mainClass {

 public static void main(String[] args) {

     ClickerGame game = new ClickerGame();

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

        game.addComponentToPane(frame.getContentPane());

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

        LoadFile load = new LoadFile();

 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

        public void run() {
        SaveFile save = new SaveFile();
        }
    }));
 }

Full&#34; SaveClass&#34;代码:

  package Clicker;

import java.io.*;

public class SaveFile{

    ClickerGame CG = new ClickerGame();{

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

    save.writeObject(CG.CarMain.Money);
    save.writeObject(CG.CarMain.MoneyClicks);
    save.writeObject(CG.CarMain.Boxes);
    save.writeObject(CG.CarMain.BoxesClicks);
    save.writeObject(CG.CarMain.PlayerLevel);
    save.writeObject(CG.CarMain.BoxLevel);

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

Full&#34; LoadClass&#34;代码:

package Clicker;

import java.io.*;

public class LoadFile {

    ClickerGame CG =new ClickerGame();{

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

            CG.CarMain.Money = (int) load.readObject();
            CG.CarMain.MoneyClicks = (int) load.readObject();
            CG.CarMain.Boxes = (int) load.readObject();
            CG.CarMain.BoxesClicks = (int) load.readObject();
            CG.CarMain.PlayerLevel = (int) load.readObject();
            CG.CarMain.BoxLevel = (int) load.readObject();

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

1 个答案:

答案 0 :(得分:0)

从我收集的内容中,CG.CarMain.MoneySaveFile的上下文中调用时未定义,导致NullPointerException和文件写入的中止。从那时起,您有一个LoadClass尝试阅读的损坏文件,只会引发EOFException