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);
}
}
}
文件操作辅助类
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;
}
}
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;
}
}