1 /**
2 * @desc 启动进程
3 * @author zp
4 * @date 2018-3-29
5 */
6 public static void startProc(String processName) {
7 log.info("启动应用程序:" + processName);
8 if (StringUtils.isNotBlank(processName)) {
9 try {
10 Desktop.getDesktop().open(new File(processName));
11 } catch (Exception e) {
12 e.printStackTrace();
13 log.error("应用程序:" + processName + "不存在!");
14 }
15 }
16 }
17 /**
18 * @desc 杀死进程
19 * @author zp
20 * @throws IOException
21 * @date 2018-3-29
22 */
23 public static void killProc(String processName) throws IOException {
24 log.info("关闭应用程序:" + processName);
25 if (StringUtils.isNotBlank(processName)) {
26 executeCmd("taskkill /F /IM " + processName);
27 }
28 }
29 /**
30 * @desc 执行cmd命令
31 * @author zp
32 * @date 2018-3-29
33 */
34 public static String executeCmd(String command) throws IOException {
35 log.info("Execute command : " + command);
36 Runtime runtime = Runtime.getRuntime();
37 Process process = runtime.exec("cmd /c " + command);
38 BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));
39 String line = null;
40 StringBuilder build = new StringBuilder();
41 while ((line = br.readLine()) != null) {
42 log.info(line);
43 build.append(line);
44 }
45 return build.toString();
46 }
47 /**
48 * @desc 判断进程是否开启
49 * @author zp
50 * @date 2018-3-29
51 */
52 public static boolean findProcess(String processName) {
53 BufferedReader bufferedReader = null;
54 try {
55 Process proc = Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + processName +'"');
56 bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
57 String line = null;
58 while ((line = bufferedReader.readLine()) != null) {
59 if (line.contains(processName)) {
60 return true;
61 }
62 }
63 return false;
64 } catch (Exception ex) {
65 ex.printStackTrace();
66 return false;
67 } finally {
68 if (bufferedReader != null) {
69 try {
70 bufferedReader.close();
71 } catch (Exception ex) {}
72 }
73 }
74 }
75
76 //downfile = "D:\\DownFile\\DownFile.exe";
77 String url = request.getParameter("downfile");
78 String procName = url.substring(url.lastIndexOf("\\")+1,url.length());
79 boolean exist= findProcess(procName);
80 try {
81 if (exist) {
82 // 存在,那么就先杀死该进程
83 killProc(procName);
84 // 在启动
85 startProc(url);
86 }else {
87 startProc(url);
88 }
89 } catch (Exception e) {
90 // TODO: handle exception
91 log.error("重启/杀死提取程序失败。。。");
92 }