将终端输出转换成java
我使用以下代码将terminal命令的输出输入到java程序中将终端输出转换成java,java,io,terminal,runtime,inputstream,Java,Io,Terminal,Runtime,Inputstream,我使用以下代码将terminal命令的输出输入到java程序中 check = CharStreams.toString(new InputStreamReader(java.lang.Runtime.getRuntime().exec(command).getInputStream())); 当command=“ifconfig”时,此功能正常。但是当command=“ldapwhoami-D\”cn=admin,dc=example,dc=com\“-w password”时,变量chec
check = CharStreams.toString(new InputStreamReader(java.lang.Runtime.getRuntime().exec(command).getInputStream()));
当
command=“ifconfig”
时,此功能正常。但是当command=“ldapwhoami-D\”cn=admin,dc=example,dc=com\“-w password”
时,变量check
为空。当我自己在终端中运行相同的命令时,我得到了所需的输出。我做错了什么?请提供帮助。您没有转义命令字符串中的特殊字符
如果命令需要双引号,则应为:
command = "ldapwhoami -D \"cn=admin,dc=example,dc=com\" -w password"
注意\“
在字符串中插入双引号
也可以这样尝试:
Process p = Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
另一个选项是使用
java.util.Scanner
System.out.println(“输出”)?@Dave.Lebr1我很抱歉我不明白。如果你是指我打印check
时的输出,它什么也不打印。你是否尝试使用调试模式并找到发生了什么事?调试模式刚刚过了行。它似乎没有给出任何输出。很抱歉我使用了它。抱歉我忘了提到它。调整了问题。@DonDrenai Ok.Try建议。仍然不打印任何内容,中的变量显示为null
@DonDrenai Ok,您确定希望从标准输出中得到什么吗?。请尝试使用p.getErrorStream()
。谢谢:Dp.getErrorStream
至少给了我一个输出。如果dn:cn=admin,dc=example,dc=com
ifpassword
正确,则给出一个错误。但是命令现在给了我一个不应该出现的不同错误。不管怎么说,如果不使用进程就返回这个命令?看起来是c解决问题