1 package jp.co.areaweb.tools.command;
\r
6 public static final boolean debug = false;
\r
7 private java.lang.String cmd; /** プロパティ cmd(実行するコマンドライン)。 */
\r
8 private java.io.File workDir; /** プロパティ workDir の値 */
\r
9 private BufferedReader stdReader = null; // 標準出力
\r
10 private BufferedReader errReader = null; // エラー出力
\r
13 * コマンドを実行しその出力ストリームを取得
\r
14 * @exception IOException I/Oエラーが発生した場合
\r
16 public void execCommand() throws IOException {
\r
18 System.out.println("[Command s] " + cmd);
\r
21 if ((getCmd() == null) || getCmd().equals("")) {
\r
27 if (getWorkDir() == null) {
\r
28 process = Runtime.getRuntime().exec(getCmd());
\r
31 process = Runtime.getRuntime().exec(getCmd(), null, getWorkDir());
\r
34 process.waitFor(); // コマンド終了まで待機
\r
35 } catch (InterruptedException e) {}
\r
38 System.out.println("[Command e] "+ getCmd() +"\n");
\r
42 this.errReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
\r
44 // コマンド標準出力の入力ストリームを取得
\r
45 this.stdReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
\r
52 * 標準出力とエラー出力の結果を合成してかえす。
\r
53 * よって、本メソッドを実行するとgetStdout(),getErrout()は無効になる
\r
54 * このメソッドは、execCommand()メソッドを実行した直後の1回目の実行結果のみ有効
\r
56 * @throws IOException 例外
\r
58 public String getOutput() throws IOException {
\r
59 String std = getStdout();
\r
60 if (std.equals("")) {
\r
64 return std +"\n"+ getErrout();
\r
70 * このメソッドは、execCommand()メソッドを実行した直後の1回目の実行結果のみ有効
\r
71 * @throws IOException 例外
\r
74 public String getStdout() throws IOException {
\r
75 return convBufferedReader(this.stdReader);
\r
80 * このメソッドは、execCommand()メソッドを実行した直後の1回目の実行結果のみ有効
\r
81 * @throws IOException 例外
\r
84 public String getErrout() throws IOException {
\r
85 return convBufferedReader(this.errReader);
\r
88 private static String convBufferedReader(BufferedReader reader) throws IOException {
\r
89 if (reader == null) {
\r
92 StringBuffer strbuf = new StringBuffer();
\r
93 for (String line; (line = reader.readLine()) != null; strbuf.append(line +"\n"));
\r
96 return strbuf.toString();
\r
99 /** プロパティ cmd の取得メソッド。
\r
100 * @return プロパティ cmd の値。
\r
102 public String getCmd() {
\r
106 /** プロパティ cmd の設定メソッド。
\r
107 * @param cmd プロパティ cmd の新しい値。
\r
109 public void setCmd(String cmd) {
\r
113 /** プロパティ workDir の取得メソッド。
\r
114 * @return プロパティ workDir の値。
\r
116 public java.io.File getWorkDir() {
\r
120 /** プロパティ workDir の設定メソッド。
\r
121 * @param workDir プロパティ workDir の新しい値。
\r
123 public void setWorkDir(java.io.File workDir) {
\r
124 this.workDir = workDir;
\r
129 * @param args パラメータ
\r
131 static public void main(String[] args) {
\r
132 if (args.length < 1) {
\r
133 System.out.println("exp: java tool.job.Command [commandLine]");
\r
136 String commandLine = "";
\r
137 for (int i=0; i < args.length; i++) {
\r
139 commandLine += " ";
\r
141 commandLine += args[i];
\r
144 // エラー結果と実行結果を別々に取り出す
\r
145 System.out.println(commandLine);
\r
146 Command command = new Command();
\r
147 String stdout = "";
\r
148 String errout = "";
\r
150 command.setCmd(commandLine);
\r
151 command.setWorkDir(null);
\r
152 command.execCommand();
\r
153 stdout = command.getStdout();
\r
154 errout = command.getErrout();
\r
155 System.out.println("STD_OUT:");
\r
156 System.out.println(stdout);
\r
157 System.out.println("STD_ERROR:");
\r
158 System.out.println(errout);
\r
160 catch (Exception e) {
\r
161 e.printStackTrace();
\r
164 // エラー結果と実行結果をいっしょに取り出す
\r
165 System.out.println(commandLine);
\r
166 command = new Command();
\r
168 command.setCmd(commandLine);
\r
169 command.setWorkDir(null);
\r
170 command.execCommand();
\r
171 System.out.println(command.getOutput());
\r
173 catch (Exception e) {
\r
174 e.printStackTrace();
\r