当启动Java开发的工具时,它会在文件夹中创建临时文件。如果正确终止,这些文件将被删除,但如果以kill或pkill命令终止,则这些文件不会被删除。有什么办法可以发送信号给Java进程来在终止进程之前删除这些文件? 请帮我解决这个问题。 在前提前感谢使用Kill或pkill unix comamnds异常终止时的Java进程不会删除临时文件
-1
A
回答
0
您可以添加关闭挂钩并清除您明确需要的所有内容。
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
//put your shutdown code here
}
});
这实际上和java.io.File#deleteOnExit
一样。
+0
如果'deleteOnExit'确实如此,它应该如何解决问题? – Holger 2014-11-05 14:03:06
0
看来File.deleteOnExit()
在进程终止时很脆弱。相反,使用带有StandardOpenOption.DELETE_ON_CLOSE
的NIO API似乎更可靠,即使它的规范只是说:“如果未调用close
方法,则尝试在Java虚拟机终止时尝试删除该文件”
Eg运行以下程序时:
File f1=File.createTempFile("deleteOnExit", ".tmp");
f1.deleteOnExit();
final Path f2 = Files.createTempFile("deleteOnClose", ".tmp");
FileChannel ch = FileChannel.open(f2, StandardOpenOption.DELETE_ON_CLOSE);
System.out.println(f1);
System.out.println(f2);
LockSupport.parkNanos(Long.MAX_VALUE);
// the following statement is never reached, but it’s here to avoid
// early cleanup of the channel by garbage collector
ch.close();
,杀进程,同时它挂在parkNanos
时,JVM离开deleteOnExit
tmp文件,同时删除正确我的机器上的文件deleteOnClose
。
相关问题
- 1. 程序终止时临时文件删除
- 2. 临时文件,单实例锁和进程终止(Java)
- 3. 用Java删除临时文件
- 4. 删除Java的“临时Internet文件”
- 5. Java临时文件和自动删除
- 6. 由resque worker创建的临时文件不会被删除
- 7. 如果程序失败,Python不会删除临时文件
- 8. 删除临时文件php
- 9. 使用进程时程序不终止
- 10. 如何创建在程序终止后自动删除的临时文件
- 11. GC不清除(是:临时文件不会自动删除,Ruby)
- 12. 不能删除临时ASP.NET的文件
- 13. 使用FileStreamResult删除临时文件
- 14. 删除临时文件
- 15. 删除临时文件
- 16. 删除临时文件
- 17. Unix的后台进程异常停止
- 18. 何时删除临时文件?
- 19. 为什么在调试时未处理的异常不会终止进程?
- 20. 当文件被删除时,FileOutputStream写入不会引发异常?
- 21. Visual Studio 2008:临时文件是可见的,不会被删除
- 22. java程序文件在临时IO上重新处理异常
- 23. 删除FileOutputStream文件时为什么不会出现异常?
- 24. 文件夹删除脚本中的非终止异常
- 25. IF EXISTS不会删除临时表
- 26. 启动时删除临时文件
- 27. 在perl中自动删除子进程中的临时文件
- 28. 当进入异常时应用程序终止
- 29. 在会话结束时从服务器删除临时文件
- 30. 当主进程被终止时,bash子进程不会被终止
'kill -15'? *“终止信号,这是杀死进程的默认和最安全的方式。”*不知道它是否工作,虽然... – MadProgrammer 2014-11-05 10:17:52
这个问题适合[超级用户](http://superuser.com/)更好。 – dic19 2014-11-05 12:09:12