Так как вы используете 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();
}
});
}
}
Пожалуйста, помните об использовании перехватчиков завершения работы.Как указано в Javadoc , в нем говорится, что
Когда виртуальная машина завершает работу из-за выхода пользователя из системы или завершения работы системы, базовая операционная система может разрешить только фиксированное количество временичтобы закрыть и выйти.Поэтому нежелательно пытаться взаимодействовать с пользователем или выполнять длительные вычисления в ловушке завершения работы