JAVA Runtime の外部プロセス実行で ” で囲んだ文字列が分かれて渡される (Linux)

少しはまったので備忘録しておきます。

[ コード例 ]



String spec = "Width : 23.50 Length : 234.20"
// 外部プログラムコマンド //
String cmd = this.phpGDCommandStamp + " " + imgfnm + " " + outfnm + " "
	      // Windows では通用した //
        //+ "\"" + spec + "\" " +  getPanelColorConfig(spec) + " 48 H " + colrgbMap.get(col) + " "
        // Linux では分かれてしまうので、置き換えて外部プログラム側で元に戻す //
        + spec.replaceAll(" ", "_") + " " + getPanelColorConfig(spec) + " 48 H " + colrgbMap.get(col) + " "
        + this.phpGDCommandPath;
System.out.println(cmd);

String restxt = "";
try {

  Runtime runtime = Runtime.getRuntime();
  Process p = runtime.exec(cmd);
  InputStream is = p.getInputStream();

  // レスポンス取得 //
  int nread;
  byte[] rbuf = new byte[200];
  while ((nread = is.read(rbuf)) > 0) {
  }
  restxt = new String(rbuf, "US-ASCII");

}
catch (Exception e) {
  e.printStackTrace();
}
System.out.println(restxt);

コメントを残す