进程不会在java中结束,也不会在前面传递控制权

时间:2017-07-10 06:53:09

标签: java processbuilder

我正在尝试调用命令提示符并在其中记录一些凭据。为此,我采取以下方法:

[False, True, False, True, False, True, True, False]

但是当我运行该程序时,它并没有结束。 Eclipse和cmd运行总是需要显式退出程序。也许我错过了什么。任何帮助将不胜感激。它只适用于所需的东西,但不会退出,我需要集成到我的程序中而不能这样做。

1 个答案:

答案 0 :(得分:0)

您不能关闭writer

可运行任务中的循环会询问读者是否有更多输入:

while ((line = br.readLine()) != null) { ... }

除非关闭主线程中的writer,否则始终如此。因此,对于快速解决方案,在最后一次写入操作之后放置一个简单的writer.close()

更好的解决方案是使用Java 7中引入的 try-with-resources statement 。您应该打开读者,编写者,扫描仪等,如下所示:

try (Scanner scanner = ...) { ... }
try {Reader reader = ...) { ... }
try {Writer writer = ...) { ... }

这些语句将为您处理结束automatically。作为副作用,它将使您的代码更具可读性。

警告:关闭与Scanner连接的System.in也会关闭标准输入,以便在此之后无法再读取任何输入。如果您的代码部分不合适,请不要关闭扫描仪。