java执行cmd命令并回显

  java 执行cmd命令回显类
package com.zhouya.common.util;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
* <p>执行cmd命令并回显</p>
* <p>Copyright: Copyright (c) 2010</p>
* <p>www.it8090.net</p>
*
* @author 周亚
* @version 1.0
*/

public class Cmd extends Thread ... {

    InputStream is;
    String type;
    String url;
    boolean tag;

    Cmd(InputStream is, String type,String url,boolean tag) ...{
        this.is = is;
        this.type = type;
        this.url=url;
        this.tag=tag;
    }


    public void run() ...{
        try ...{
            InputStreamReader isr = new InputStreamReader(is,"GBK");
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            List<String> list=new ArrayList<String>();
            while ((line = br.readLine()) != null) ...{
                list.add(type + " " + line);
            }

            if(tag)//生成临时文件存储cmd回显命令
             FileUtil.createFile(url, list);
        }
catch (IOException ioe) ...{
            ioe.printStackTrace();
        }

    }

    
    /**
     * 执行CMD命令入口方法
     * @param cmd 要执行的cmd命令
     * @param url 命令回显存储的文件目录 如D://cmd.log
     * @param tag 是否生成存储文件 true 生成 false 不生成
     * @param sleepTime 线程休眠时间 5000==5秒
     * @return
     */

    public static List<String> exec(String cmd,String url,boolean tag,int sleepTime)...{
        List<String> list=new ArrayList<String>();
        try ...{
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec(cmd);
                Cmd errorGobbler = new Cmd(proc.getErrorStream(),
                        "错误+--------->",url,tag);
                Cmd outputGobbler = new Cmd(proc.getInputStream(),
                        "回显+--------->",url,tag);
                errorGobbler.start();
                outputGobbler.start();
                //休眠 防止文件还在写入中。。。
                Thread.sleep(sleepTime);
                
                if(tag)...{
                    //读取临时存储cmd回显内容的文本文件
                    list=FileUtil.getFileContent(url);
                    //休眠 防止文件还在读取中。。。
                    //Thread.sleep(sleepTime);
                    //删除临时文件
                    FileUtil.deleteFile(url);
                }

        }
catch (Exception e) ...{
                System.err.println(e.getMessage());
        }

        return list;
    }

    
    /**
     * 测试方法
     */

    public static void main(String args[]) ...{
        List<String> list=Cmd.exec("help","D://cmd_temp.log",true,5000);
        for (String string : list) ...{
            System.out.println(string);
        }

    }

}
文件操作辅助类
package com.zhouya.common.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
* <p>文件操作辅助类</p>
* <p>Copyright: Copyright (c) 2010</p>
* <p>www.it8090.net</p>
*
* @author 周亚
* @version 1.0
*/

public class FileUtil ... {
    private static Random random = new Random();

    /**随机产生六位数*/
    public static String getValeRandomPWD() ...{
        String num = " " + random.nextInt(9) + random.nextInt(9)
                + random.nextInt(9) + random.nextInt(9) + random.nextInt(9)
                + random.nextInt(9);
        return num;
    }



    /**
     * 用于创建文件夹
     *
     * @param path
     * 路径必须是有效的
     * @param fileName
     * 要创建文件夹的名称
     */

    public static void mkdir(String path, String fileName) ...{
        String mkdirName = path + fileName;
        try ...{
            File dirFile = new File(mkdirName);
            boolean bFile = dirFile.exists();

            if (!bFile) ...{
                bFile = dirFile.mkdir();
                if (!bFile) ...{
                    System.err.println("文件夹创建失败,请确认磁盘没有写保护并且空件足够以及path:【"
                            + path + "】的有效性");
                    System.exit(1);
                }

            }

        }
catch (Exception err) ...{
            System.err.println("文件夹创建发生异常");
            err.printStackTrace();

        }

    }


    /**
     * 删除文件,可以是单个文件或文件夹
     *
     * @param fileName
     * 待删除的文件名
     * @return 文件删除成功返回true,否则返回false
     */

    public static boolean delete(String fileName) ...{
        File file = new File(fileName);
        if (!file.exists()) ...{
            //System.err.println("删除文件失败:" + fileName + "文件不存在");
            return false;
        }
else ...{
            if (file.isFile()) ...{

                return deleteFile(fileName);
            }
else ...{
                return deleteDirectory(fileName);
            }

        }

    }


    /**
     * 删除单个文件
     *
     * @param fileName
     * 被删除文件的文件名
     * @return 单个文件删除成功返回true,否则返回false
     */

    public static boolean deleteFile(String fileName) ...{
        File file = new File(fileName);
        if (file.isFile() && file.exists()) ...{
            file.delete();
            System.err.println("删除单个文件" + fileName + "成功!");
            return true;
        }
else ...{
            System.err.println("删除单个文件" + fileName + "失败!");
            return false;
        }

    }

    
    /**
     * 查找目录(文件夹)是否存在
     * @param dir 目录的文件路径
     * @return 目录存在返回true,否则返回false
     */

    public static boolean findDirectory(String dir) ...{
        boolean result=false;
        try
        ...{
        if((new File(dir).isDirectory()))
        ...{
            result=true;
        }

        }

        catch(SecurityException e)
        ...{
         e.printStackTrace();
        }


        return result;
    }

    
    /**
     * 删除目录(文件夹)以及目录下的文件
     *
     * @param dir
     * 被删除目录的文件路径
     * @return 目录删除成功返回true,否则返回false
     */

    public static boolean deleteDirectory(String dir) ...{
        // 如果dir不以文件分隔符结尾,自动添加文件分隔符
        if (!dir.endsWith(File.separator)) ...{
            dir = dir + File.separator;
        }

        File dirFile = new File(dir);
        // 如果dir对应的文件不存在,或者不是一个目录,则退出
        if (!dirFile.exists() || !dirFile.isDirectory()) ...{
            System.err.println("删除目录失败" + dir + "目录不存在!");
            return false;
        }

        boolean flag = true;
        // 删除文件夹下的所有文件(包括子目录)
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) ...{
            // 删除子文件
            if (files[i].isFile()) ...{
                flag = deleteFile(files[i].getAbsolutePath());
                if (!flag) ...{
                    break;
                }

            }

            // 删除子目录
            else ...{
                flag = deleteDirectory(files[i].getAbsolutePath());
                if (!flag) ...{
                    break;
                }

            }

        }


        if (!flag) ...{
            System.err.println("删除目录失败");
            return false;
        }


        // 删除当前目录
        if (dirFile.delete()) ...{
            System.err.println("删除目录" + dir + "成功!");
            return true;
        }
else ...{
            System.err.println("删除目录" + dir + "失败!");
            return false;
        }

    }


    /**
     * 创建文件
     *
     * @param fileUrl
     * 写入文件路径名称
     * @param content
     * 内容
     */

    public static void createFile(String fileUrl, String content) ...{

        PrintWriter pw;
        try ...{
            pw = new PrintWriter(new FileWriter(fileUrl));
            pw.println(content);
            pw.close();
        }
catch (IOException e) ...{
            System.err.println("创建文件失败!!!");
            e.printStackTrace();
        }

    }

    
    /**
     * 创建文件
     *
     * @param fileUrl
     * 写入文件路径名称
     * @param list
     * 内容 (按行写入)
     */

    public static void createFile(String fileUrl,List<String> list) ...{

        PrintWriter pw;
        try ...{
            pw = new PrintWriter(new FileWriter(fileUrl));
            //pw =new PrintWriter( new OutputStreamWriter(new FileOutputStream(fileUrl), "UTF-8"));
    
            for (String str : list) ...{
                pw.println(str);
            }

            pw.close();
        }
catch (IOException e) ...{
            System.err.println("+-------->创建文件失败!!!");
            System.err.println("+-------->"+e.getMessage());
        }

    }

    
    /**
     * 读取文件
     * @param fileUrl 文件路径
     * @return
     */

    public static List<String> getFileContent(String fileUrl)...{
        List<String> list=new ArrayList<String>();
        FileReader reader;
        try ...{
            reader = new FileReader(fileUrl);
             BufferedReader br = new BufferedReader(reader);
        
         String word = null;
         while ((word = br.readLine()) != null) ...{
        
             list.add(word);    
         }
                 
         br.close();
         reader.close();
        }
catch (Exception e) ...{
            if(e.getMessage()!=null&&e.getMessage()!=" ")
            System.err.println("【读取文件出错:"+e.getMessage()+"】");
        }

        return list;
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值