java - 创建 ".bat"文件,运行它并从Java中删除它

标签 java multithreading runtime.exec

我正在 Java 中动态创建 .bat

创建文件并执行后,我想删除它。

为了确保 delete() 在运行 .bat 文件后执行,我在不同的线程中删除了该文件。

这是完成这项任务的好方法吗?您将如何以更好的方式实现它?

final File file = new File("run.bat");
file.createNewFile();
PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.println(COMMAND1);
writer.println(COMMAND2);

.... ANOTHER COMMANDS

writer.close();
Runtime.getRuntime().exec("cmd /c start a.bat");

new Thread(new Runnable() {
    public void run() {
        file.delete();
    }
}).run();

最佳答案

我不会在不同的线程中删除该文件,如果在您尝试删除它时文件执行仍在运行怎么办?

我会考虑询问 exit code从文件中获取,或者使用 process.waitFor() ,它会导致当前线程等待(如有必要),直到此 Process 对象表示的进程终止。

Process p = Runtime.getRuntime().exec("cmd /c start a.bat");
p.waitFor();
file.delete();

关于java - 创建 ".bat"文件,运行它并从Java中删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137006/

相关文章:

c# - 线程的执行上下文

java - Exec() 未正确解释多个命令

java - 如何在 JUnit 测试用例中获取传递给 Runtime.getRuntime.exit(value) 的值

java - getRuntime().exec 未按预期执行

java - 将 JasperPrint 转换为文件

java - 由于违反防火墙策略而拒绝访问

java - 静态同步方法中的 ConcurrentModificationError

c# - 算术 + 和按位或

java - jQuery ajax 无法从 struts2 操作中获得响应

java - 如何在按下后退按钮后停止 while 循环