【发布时间】:2016-06-12 11:23:33
【问题描述】:
我尝试了多种方法来做到这一点:在每个“flush()”之后延迟 1 秒打印到进程输出流。
但是冲洗似乎没有按预期工作。有人能告诉我为什么吗?当调用“close()”时,我得到的是一个组合 String。在“close()”生效之前不会打印任何内容。
上下文:这应该会关闭我的 Minecraft 服务器并在之后运行备份。
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
w.write("say Serverbackup begins in 3...");
w.flush();
Thread.sleep(1000);
w.write("say 2...");
w.flush();
Thread.sleep(1000);
w.write("say 1...");
w.flush();
Thread.sleep(1000);
w.write("say GAME OVER!!!!!!!!!!!!!...");
w.flush();
w.write("stop");
w.flush();
w.close();
process.waitFor(10, TimeUnit.SECONDS);
//...
【问题讨论】:
-
这段代码的输出是什么??
-
@SanketGupte 在控制台上看起来像这样:
say Serverbackup begins in 3...say 2...say 1...say GAME OVER!!!!!!!!!!!!!...stop。一根弦。 “停止”实际上会充当命令,但显然不是,因为它连接到其余部分。 -
不应该吗?我的意思是,根据您的代码,“stop”被视为字符串,因为您将它作为参数传递给 write() 方法。
-
@SanketGupte 是的,应该。但作为“独立”字符串。 :) 我需要分别打印每个“写”命令。
标签: java process io stream bufferedwriter