【问题标题】:Java WindowListener actions Closing/OpenedJava WindowListener 操作关闭/打开
【发布时间】:2017-04-30 11:41:03
【问题描述】:

所以,我试图在用户关闭应用程序时保存应用程序的当前状态,当应用程序重新打开时,数据将从序列化文件中读取,并保存在驱动器上。

我必须以某种方式检查目录中是否有这样的文件,如果有,请从中读取,如果没有(FileNotFOundException),应用程序通常应该在没有任何数据的情况下启动,然后保存它(我会在这种情况下,请手动删除文件)。

这是我定义的监听器类(现在我已经删除了文件,它会抛出 filenotfound):

class ShraniPovrni implements WindowListener {

    private ArrayList<TovornaLadja> seznamLadij;

    public ShraniPovrni(ArrayList<TovornaLadja> seznamLadij) {
        this.seznamLadij = seznamLadij;
    }

    @Override
    public void windowClosing(WindowEvent e) {
        try {
            ObjectOutputStream oos = new ObjectOutputStream(new GZIPOutputStream(new FileOutputStream("Janezek.ser")));
            oos.writeObject(seznamLadij);
            oos.flush();
            oos.close();
        } catch (Exception ex) {
            System.out.println("Tezave " + ex.toString() + ex.getMessage());
            ex.printStackTrace();
        }
    }

    @Override
    public void windowActivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowClosed(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowIconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowOpened(WindowEvent e) {
        try {
            ObjectInputStream oos = new ObjectInputStream(new GZIPInputStream(new FileInputStream("Janezek.ser")));
            seznamLadij = (ArrayList<TovornaLadja>) oos.readObject();
            oos.close();
            System.out.println(seznamLadij);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

【问题讨论】:

  • 那么你到底想问什么?
  • 我如何检查文件是否退出然后从中读取,如果它没有我如何让它不捕获异常而只是忽略它并“重新开始”然后创建新文件

标签: java file exception stream listener


【解决方案1】:

改变

public void windowOpened(WindowEvent e) {
    try {
        ObjectInputStream oos = new ObjectInputStream(new GZIPInputStream(new FileInputStream("Janezek.ser")));
        seznamLadij = (ArrayList<TovornaLadja>) oos.readObject();
        oos.close();
        System.out.println(seznamLadij);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

public void windowOpened(WindowEvent e) {
    try {
        if(new File("Janezek.ser").exists()) {
            ObjectInputStream oos = new ObjectInputStream(new GZIPInputStream(new FileInputStream("Janezek.ser")));
            seznamLadij = (ArrayList<TovornaLadja>) oos.readObject();
            oos.close();
            System.out.println(seznamLadij);
        }
        else {
            //No file is there, start fresh
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2010-09-20
    • 2011-04-16
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多