这是一台Linux机器,下面的代码不会导致任何输出,我很好奇为什么。 P.S. - 我没有阅读关于需要转义的代字号,但是在任何情况下都用反斜杠和javac指出了语法错误。Runtime.getRuntime().exe(“ls〜”)没有列出主目录的内容
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Run {
public static void main(String args[]) throws IOException {
Process p = Runtime.getRuntime().exec("ls ~");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
'〜'由外壳插做到这一点。 – chrylis
'Process process = Runtime.getRuntime()。exec(new String [] {“/ bin/sh”,“-c”,“ls〜”});'调用你的shell并在传递之前展开'〜'它到'ls'。 – teppic
另请参见[当Runtime.exec()不会](http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html)很多很好的有关正确创建和处理过程的提示。然后忽略它是指'exec'并使用'ProcessBuilder'来创建进程。还要将'String arg'分解为'String [] args'来解释包含空格字符的路径。 –