這是一臺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'來解釋包含空格字符的路徑。 –