执行"时间"使用java

时间:2016-10-30 07:14:34

标签: java cmd inputstream

我需要执行"时间"命令在命令提示符下使用java。问题在于,在显示时间后,它要求设置新的时间。我可以执行" dir"等命令。或者" cd"或" ver"一般。但那些要求用户输入的命令,例如" date"或"时间"无法完全执行。这是代码:

try {
     Process p = Runtime.getRuntime().exec("cmd /c time");
     p.waitFor();
     BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
     String line = reader.readLine();
     while (line != null) {
         System.out.println(line);
         line = reader.readLine();
     }
} catch (IOException e1) {} catch (InterruptedException e2) {}

我怀疑由于cmd要求输入,因此它无法被InputStream读取,因为它认为流尚未结束,因此程序永远不会停止执行。 所以,我正在寻找的是一种进入新时间的方式,当它要求我然后打印输出时,如果有的话。

1 个答案:

答案 0 :(得分:1)

如果您唯一关心的是第一个输出,那么您不应该等待该过程退出(p.waitFor()),而是继续获取​​输入流并读取该行。代码如下。

try {
        String [] commands = {"cmd.exe","/C","time"};
         Process p = Runtime.getRuntime().exec(commands);
         OutputStream out = p.getOutputStream();
         BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
         String line = reader.readLine(); // read the first line
         System.out.println(line);

         // write to ouput
         out.write("sample".getBytes());
         out.flush();
         line = reader.readLine();
         System.out.println(line);
         line = reader.readLine();
         System.out.println(line);
         p.destroy();
    } catch (IOException e1) {}