$ cc test.c -o test (譯者注:對于linux用戶,可以用gcc test.c ?o test,對應(yīng)windows用戶可以用相應(yīng)的c語言編譯程序編譯成可執(zhí)行程序test.exe) (你的 C 編譯器可能要求不同的參數(shù))然后使用下面的代碼調(diào)用那個程序:
import java.io.*; import java.util.ArrayList;
public class ExecDemo { static public String[] runCommand(String cmd) throws IOException {
// set up list to capture command output lines
ArrayList list = new ArrayList();
// start command running
Process proc = Runtime.getRuntime().exec(cmd); /**譯者注:前面的聲明應(yīng)該改成java.lang.Process,即: java.lang.Process proc = Runtime.getRuntime().exec(cmd); 假如不改的話可能編譯不同通過,在譯者的機(jī)器上使用jdk1.2,編譯出現(xiàn)5個錯誤 使用jdk1.4編譯出現(xiàn)4個錯誤 */ // get command´s output stream and // put a buffered reader input stream on it
InputStream istr = proc.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(istr));
// read output lines from command
String str; while ((str = br.readLine()) != null) list.add(str);
public class DumpFiles { public static void main(String args[]) { String list[] = new File(".").list(); for (int i = 0; i < list.length; i++) System.out.println(list); } }
給出當(dāng)前目錄下所有文件和目錄的列表。因此在大多情況下,使用ls/dir 可能沒有意義。 使使用Runtime.exec有意義的一個情況就是答應(yīng)用戶指定一個編輯器或者文字處理程序(就像Emacs 或者 Vi 或者Word) 編輯文件。這是大型程序的一個通常的特性。程序?qū)⒂幸粋€配置文件指定編輯器的本地路徑,然后使用這個路徑調(diào)用Runtime.exec。 Runtime.exec 的一個微妙的地方就是它如何查找文件。例如,你使用: