重複の可能性:
パイプをRuntime.exec()で機能させる方法は?
こんにちは私は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();
}
}
その動作はしますが、私は見ていません。この関数は、システムに存在するすべてのフォントを返します。コマンドgrepはexecではないようですか?
別のバージョンのコマンド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)
何が悪いのかアドバイスをいただけますか?どうもありがとう