java版本streamgobbler_java调用本地命令 Runtime class's exec() method
一個(gè)簡(jiǎn)單的定時(shí)調(diào)用dos命令的例子
2,
ExecJavac.java?帶有異常處理的命令調(diào)用例子
3,
GoodWindowsExec.java?執(zhí)行windows下的命令,命令作為參數(shù)輸入
StreamGobbler.java
4,
GoodWinRedirect.java?一個(gè)調(diào)用命令相對(duì)復(fù)雜的例子,復(fù)合命令
StreamRedirectGobbler.java
5,
TestExec.java?測(cè)試輸入的命令是否能正確run
1 一個(gè)在windows平臺(tái)下定時(shí)調(diào)用dos命令的簡(jiǎn)單例子。
==================== SchedulerExec 開(kāi)始
==============================
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class SchedulerExec {
//調(diào)度者
private static Timer timer = new Timer();
//任務(wù)
static class ScheduledTask extends TimerTask {
public void
run() {
try {
Process process1, process2;
//1 執(zhí)行windows的DOS命令:copy c:/a.txt 文件 到 d:/b.txt
process1 = Runtime.getRuntime().exec("cmd /c copy c:/a.txt
d:/b.txt");
if (process1.waitFor() == 0) {//等待copy 完畢, process1.waitFor()
會(huì)造成阻塞
//2 執(zhí)行windows的DOS命令:打開(kāi)b.txt文件
process2 = Runtime.getRuntime().exec("cmd /c d:/b.txt");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//測(cè)試方法
public static void main(String[] args) {
//1 定義時(shí)程
11:11:11
Calendar
calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 11);
calendar.set(Calendar.SECOND, 11);
Date time =
calendar.getTime();
//2
新建任務(wù)
ScheduledTask scheduledTask = new ScheduledTask();
//3
執(zhí)行調(diào)度
timer.schedule(scheduledTask, time);
System.out.println("A job has been scheduled at " + time);
}
}
==================== SchedulerExec 開(kāi)始
==============================
2 當(dāng)本地進(jìn)程拋出異常 或者錯(cuò)誤信息時(shí)的 解決方式。
很多時(shí)候,由于給定的參數(shù)不合法或者其它原因,會(huì)造成實(shí)際進(jìn)程的調(diào)用出現(xiàn)錯(cuò)誤,我們必須對(duì)這些錯(cuò)誤進(jìn)行處理,以免進(jìn)程處于阻塞或者死鎖。增強(qiáng)程序的穩(wěn)定性。
下面是一個(gè)windows下調(diào)用javac命令的例子,我們都知道 javac后面是需要帶參數(shù)的 如:java類(lèi)名等。
這里只調(diào)用javac,而不給參數(shù),目的是演示如何處理實(shí)際進(jìn)程給出的錯(cuò)誤信息。
==================== ExecJavac 開(kāi)始
==============================
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ExecJavac {
public static void main(String args[]) {
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch
(Throwable t) {
t.printStackTrace();
}
}
}
==================== ExecJavac 結(jié)束
==============================
下面是輸出:
==================== 輸出開(kāi)始 ==============================
用法:javac
其中,可能的選項(xiàng)包括:
-g?生成所有調(diào)試信息
-g:none?不生成任何調(diào)試信息
-g:{lines,vars,source}?只生成某些調(diào)試信息
-nowarn?不生成任何警告
-verbose?輸出有關(guān)編譯器正在執(zhí)行的操作的消息
-deprecation?輸出使用已過(guò)時(shí)的 API 的源位置
-classpath
?指定查找用戶類(lèi)文件的位置
-cp
?指定查找用戶類(lèi)文件的位置
-sourcepath
?指定查找輸入源文件的位置
-bootclasspath
?覆蓋引導(dǎo)類(lèi)文件的位置
-extdirs
?覆蓋安裝的擴(kuò)展目錄的位置
-endorseddirs
?覆蓋簽名的標(biāo)準(zhǔn)路徑的位置
-d
?指定存放生成的類(lèi)文件的位置
-encoding
?指定源文件使用的字符編碼
-source
?提供與指定版本的源兼容性
-target
?生成特定 VM 版本的類(lèi)文件
-version
總結(jié)
以上是生活随笔為你收集整理的java版本streamgobbler_java调用本地命令 Runtime class's exec() method的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么要打破刚性兑付?打破刚性兑付意味着
- 下一篇: spring security:第一个程