Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将终端输出转换成java_Java_Io_Terminal_Runtime_Inputstream - Fatal编程技术网

将终端输出转换成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

我使用以下代码将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”
时,变量
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()
。谢谢:D
p.getErrorStream
至少给了我一个输出。如果
dn:cn=admin,dc=example,dc=com
if
password
正确,则给出一个错误。但是命令现在给了我一个不应该出现的不同错误。不管怎么说,如果不使用进程就返回这个命令?看起来是c解决问题