我需要在程序退出时执行一个创建文件的方法,应该如何做?
当我退出程序时,我需要执行一个创建文件的方法。如何实现呢?
当我退出程序时,我需要执行一个创建文件的方法。如何实现呢?
添加关闭钩子。请参考此javadoc。
示例:
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
System.out.println("In shutdown hook");
}
}, "Shutdown-thread"));
}
kill <procId>
命令杀死进程,它会起作用,但如果您使用kill -9 <procId>
命令,则不会起作用。 - Black因为您正在使用Swing。当您关闭应用程序(按下关闭按钮)时,您可以简单地隐藏您的框架。运行您想要创建文件并退出框架的方法。这将导致优美的退出。如果有任何错误/异常,您可以将其记录到单独的文件中。
代码如下:
package test;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame{
public TestFrame thisFrame;
public TestFrame(){
this.setSize(400, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
public static void main(String[] args){
TestFrame test = new TestFrame();
test.addComponentListener(new ComponentAdapter() {
@Override
public void componentHidden(ComponentEvent e) {
System.out.println("Replace sysout with your method call");
((JFrame)(e.getComponent())).dispose();
}
});
}
}
addWindowListener是更好的解决方案:
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
// run methods before closing
try {
Runtime.getRuntime().exec("taskkill /f /im java.exe");
} catch (IOException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
}
});
class ExitThread extends Thread {
public void run() {
// code to perform on exit goes here
}
}
//in main or wherever, beginning of execution
ExitThread t = new ExitThread();
//don't call t.start(), the hook will do it on exit
addShutdownHook(t);
虽然我没有测试过,但这应该可以让你开始。此外,如果您想将一些参数传递给该线程,则不必使用默认构造函数。