可执行文件启动器(上)

可执行文件启动器可以以一定的时间间隔反复执行外部某个可执行文件。
如果我们其用源代码生成的jar文件为:Launcher.jar。
则可以用如下的DOS命令运行它:
java -jar lib\Launcher.jar getProcessState.bat 5000
5000表示每隔5000毫秒执行一次getProcessState.bat 文件
源码包含2个文件 Worker.java Launcher.java
Worker.java文件:
<wbr style="line-height:25px"></wbr>
package com.teleca.robin;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JLabel;
import javax.swing.JTextField;

public class Worker extends Thread {
private boolean loop=true;
private boolean paused=false;
private int cnt=0;
final private JLabel consoleText;
Worker(JLabel lable)
{
consoleText=lable;
}
private long interval=1000;
void setInterval(long interval)
{
this.interval=interval;
}
private String executableFileName;
void setExecutableFileName(String file)
{
if(executableFileName!=null&&file!=null)
{
if(!executableFileName.equals(file))
cnt=0;
}
executableFileName=file;
}
public void doPause()
{
paused=true;
}
public void doResume()
{
paused=false;
interrupt() ;
}
public void die()
{
loop=false;
}
public void run()
{
while( loop )
{
if( paused || executableFileName==null )
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
else
{
BufferedReader stdout = null;
try {
Process p = null;
String line = null;
p = Runtime.getRuntime().exec(executableFileName, null, null);
stdout = new BufferedReader(new InputStreamReader(p
.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
stdout=null;
} catch (IOException e) {
e.printStackTrace();
}finally{
if(stdout!=null)
try {
stdout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
cnt++;
if(consoleText!=null)
consoleText.setText("Execute the file "+cnt+" times");
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}
System.out.println("exit!");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值