例如,如果我选择运行一个bash脚本来输出(回显)时间,例如CheckDate.sh
。我如何从Java运行它,然后在我的Java程序中打印bash脚本的结果(日期)?
答案 0 :(得分:3)
一种方法是在Process对象中分配脚本执行,并从其输入流中检索脚本输出。
try {
// Execute command
String command = "ls";
Process process = Runtime.getRuntime().exec(command);
// Get the input stream and read from it
InputStream in = process.getInputStream();
int c;
while ((c = in.read()) != -1) {
process((char)c);
}
in.close();
} catch (IOException e) {
LOGGER.error("Exception encountered", e);
}
另一种方法是让你的bash脚本在一个文件中写出它的输出,然后从Java中读回这个文件。
祝你好运。答案 1 :(得分:2)
试试这段代码。
String result = null;
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec("example.bat");
BufferedReader in =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
result += inputLine;
}
in.close();
} catch (IOException e) {
System.out.println(e);
}
答案 2 :(得分:2)
java.lang.Process
类用于此类目的。您可以使用(更简单的)java.lang.Runtime.exec
函数或(更复杂的)java.lang.ProcessBuilder
类在Java中运行外部进程。最后,两者都为您提供了java.lang.Process
的实例,您可以调用其getInputStream
方法来获取可以从中读取输出的流。
有关更多信息,请参阅Javadoc。