尽管我输入了正确的日期,但如果我在其他地方输入了日期,则会出现错误。我想知道如何将多个输入写入命令提示符。
例如,我将"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();
}
}
}
答案 0 :(得分:0)
您总是可以再写一次
writer.write("whatever");
答案 1 :(得分:0)
似乎该命令尝试读取一个值时,它将读取所有可用输入并将其视为一个值。您必须在正确的时间编写和刷新值,并在这方面避免所有缓冲:
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();
}