Java 调用EXE
轉(zhuǎn)載自? ? Java 調(diào)用EXE
使用Runtime.getRuntime().exec()方法可以在java程序里運(yùn)行外部程序. ??
? 該方法有6個可訪問版本: ??
? 1.exec(String ? command) ??
? 2.exec(String ? command, ? String ? envp[], ? File ? dir) ? ??
? 3.exec(String ? cmd, ? String ? envp[]) ??
? 4.exec(String ? cmdarray[]) ??
? 5.exec(String ? cmdarray[], ? String ? envp[]) ??
? 6.exec(String ? cmdarray[], ? String ? envp[], ? File ? dir) ??
? ??
? 一般的應(yīng)用程序可以直接使用第一版本,當(dāng)有環(huán)境變量傳遞的時候使用后面的版本. ??
? 其中2和6版本可以傳遞一個目錄,標(biāo)識當(dāng)前目錄,因?yàn)橛行┏绦蚴鞘褂孟鄬δ夸浀?所以就要使用這個版本. ??
? 當(dāng)要執(zhí)行批處理的時候,不能直接傳遞批處理的文件名,而要使用: ??
? cmd.exe ? /C ? start ? 批處理文件名 ??
? 使用dos命令(比如dir)時也要使用掉調(diào)用. ??
? ??
? 如果想與調(diào)用的程序進(jìn)行交互,那么就要使用該方法的返回對象Process了,通過Process的getInputStream(),getOutputStream(),getErrorStream()方法可以得到輸入輸出流,然后通過InputStream可以得到程序?qū)刂婆_的輸出信息,通過OutputStream可以給程序輸入指令,這樣就達(dá)到了程序的交換功能. ??
? 例子如下:? ?
package com.broadcontact.netadmin.schedule; import java.io.PrintWriter; import java.io.PrintStream; import java.io.IOException; import java.sql.SQLException; import java.util.Date; import java.io.StringReader; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.Reader; import java.io.File; import java.io.BufferedWriter; import java.io.OutputStreamWriter; /** * <p>Title: netadmin</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: nm group</p> * @author Maico(Panghf) * @version 1.0 */ public class ExecuteTask implements Runnable { private boolean isRunning=true; public ExecuteTask() { } public void run(){ } public static void main(String[] args){ try { Process proc=Runtime.getRuntime().exec("cmd.exe"); BufferedReader read=new BufferedReader(new InputStreamReader(proc.getInputStream())); new Thread(new Echo(read)).start(); PrintWriter out=new PrintWriter(new OutputStreamWriter(proc.getOutputStream())); BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String instr = in.readLine(); while(!"exit".equals(instr)){ instr = in.readLine(); out.println(instr); file://out.println("telnet 192.168.0.1"); out.flush(); } in.readLine(); read.close(); out.close(); } catch (IOException ex) { ex.printStackTrace(); } } } class Echo implements Runnable { private BufferedReader read; public Echo(BufferedReader read){ this.read = read; } public void run() { try { String l = read.readLine(); while (l != null) { System.out.println(l); l = read.readLine(); } System.out.println("---執(zhí)行完畢:"); } catch (IOException ex) { ex.printStackTrace(); } } }總結(jié)
以上是生活随笔為你收集整理的Java 调用EXE的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联合评论:自由职业者的最佳选择?2022
- 下一篇: Java调用exe阻塞