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;
}
}




























































































































































































































































































































































































