Java 如何在命令提示符下多次运行BufferedReader以输入值?
虽然我写了一个正确的日期,但如果我把别的东西放在哪里,那就是一个错误。我想知道如何将多个输入写入命令提示符。 例如,我将Java 如何在命令提示符下多次运行BufferedReader以输入值?,java,java-8,command-prompt,Java,Java 8,Command Prompt,虽然我写了一个正确的日期,但如果我把别的东西放在哪里,那就是一个错误。我想知道如何将多个输入写入命令提示符。 例如,我将“05-13-2018”作为writer.write()的变量。如果我想输入一个值,那么在代码下面是否有任何方法可以输入一个值,然后执行该值。如果你不明白我想要达到的目标,请给我留言。再次感谢你的帮助 import java.io.*; import java.util.ArrayList; public class command{ public static v
“05-13-2018”
作为writer.write()
的变量。如果我想输入一个值,那么在代码下面是否有任何方法可以输入一个值,然后执行该值。如果你不明白我想要达到的目标,请给我留言。再次感谢你的帮助
import java.io.*;
import java.util.ArrayList;
public class command{
public static void main(String[] args) {
String command="cmd /c date";
try {
Process process = Runtime.getRuntime().exec(command);
OutputStreamWriter outputt = new OutputStreamWriter(process.getOutputStream());
BufferedWriter writer = new BufferedWriter(outputt);
writer.write("05-13-2018");
writer.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
你总是可以再写一篇
writer.write("whatever");
看起来,当命令尝试读取一个值时,它将读取所有可用的输入并将其视为一个值。必须在正确的时间写入和刷新值,因此,避免所有缓冲:
String command="cmd /c date";
try {
Process process = Runtime.getRuntime().exec(command);
try(Writer writer = new OutputStreamWriter(process.getOutputStream());
Reader reader = new InputStreamReader(process.getInputStream())) {
CharBuffer buf = CharBuffer.allocate(80);
int tries = 3;
while(process.isAlive()) {
while(reader.ready() && reader.read(buf)>0) {
System.out.append(buf.flip());
buf.clear();
}
if(tries-- == 0) {
process.destroy();
break;
}
writer.write("05-13-2018");
writer.flush();
while(!reader.ready()) Thread.sleep(200);
}
}
} catch(IOException|InterruptedException e) {
e.printStackTrace();
}
是否要通过命令行手动输入?@Eugene否,但我的最终目标是创建一个GUI界面,在该界面中,我将两个值从客户端传递到一个exe程序中的命令程序,该程序采用主机名和密码,并使用给定的信息进行一些计算。因此,最终,您要输入几个连续的输入,在
之前,系统无法接受输入的日期。
消息已消失,对吗?@Eugene Yeah close,但实际上我将运行一个命令,您在其中输入一个目录运行一个命令,并在命令提示符下提示您输入主机名,然后输入密码。这就是为什么我问是否有方法进行两个或多个输入。在写入值后,需要在writer
上执行newLine()
。在这里,它仍然有效,因为您在写入值后关闭了流,这迫使另一方接收它。但是,当然,这只能做一次。所以使用writer.write(value1);writer.newLine();writer.write(value2);writer.newLine()代码>并仅在结尾处关闭。对于较小的值,您甚至不需要等待程序输出“enter…”消息,因为写入的数据将被缓冲。对于交互式输入,它无论如何都可以工作,因为用户将在输入值之前等待。