0
可能重複:
How to make pipes work with Runtime.exec()?的Java EXEC linux命令
你好,我使用exec命令寫了簡單的Java功能。這個函數檢查系統中是否存在字體(linux)。首先,我寫了簡單的bash命令:identify -list font | grep -i 'Font: Times-Bold' -w
其完美的工作,所以我創建簡單的程序:
public abstract class SystemReader{
public static final void checkFontExist(String name){
String command = "identify -list font | grep -i -w \'Font: " + name + "\'";
Process p =Runtime.getRuntime().exec(command);
String lines = "";
String resoults ="";
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line buferedReader.readLine())!=null){
resoult += line + "\n";
}
System.out.println("RESPONSE: " + resoult);
bufferreader.close();
}
}
其工作,但不是我espect。該函數返回我係統中存在的所有字體。 它似乎命令grep不是可執行文件?
我嘗試使用EXEC命令的另一個版本()我創造:
String command = {"identify -list font", "grep -i -w \'Font: " + fontName + "\'"}
,但我有錯誤:
Exception in thread "main" java.io.IOException: Cannot run program "identify -list font ": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
你能不能給我建議什麼是錯的?非常感謝
管道系統由外殼提供,因此您需要手動將一個命令的結果傳遞給另一個命令。 – ranman