码迷,mamicode.com
首页 > 其他好文 > 详细

可执行文件启动器(上)

时间:2015-06-16 16:18:27      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

可执行文件启动器可以以一定的时间间隔反复执行外部某个可执行文件。
如果我们其用源代码生成的jar文件为:Launcher.jar。
则可以用如下的DOS命令运行它:
java -jar lib\Launcher.jar getProcessState.bat 5000
5000表示每隔5000毫秒执行一次getProcessState.bat 文件。
源码包含2个文件Worker.java和Launcher.java

Worker.java文件:

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!");
    }
}

 

可执行文件启动器(上)

标签:

原文地址:http://www.cnblogs.com/Free-Thinker/p/4580670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!