以下方法支持Linux和windows两个系统的命令行调用。还用到了apache的lang工具包commons-lang3-3.1.jar来判断操作系统类型、也用到了和log4j-1.2.16.jar来打印日志。至于rm -rf 是否能成功删除文件,可以手动去调用命令行试试。
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、微网站、成都小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站设计制作、成都网站制作、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
private String callCmd(String cmd) throws InterruptedException, UnHandledOSException, ExecuteException {
if(SystemUtils.IS_OS_LINUX){
try {
// 使用Runtime来执行command,生成Process对象
Process process = Runtime.getRuntime().exec(
new String[] { "/bin/sh", "-c", cmd });
int exitCode = process.waitFor();
// 取得命令结果的输出流
InputStream is = process.getInputStream();
// 用一个读输出流类去读
InputStreamReader isr = new InputStreamReader(is);
// 用缓冲器读行
BufferedReader br = new BufferedReader(isr);
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
return sb.toString();
} catch (java.lang.NullPointerException e) {
System.err.println("NullPointerException " + e.getMessage());
logger.error(cmd);
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());
}
throw new ExecuteException(cmd + "执行出错!");
}
if(SystemUtils.IS_OS_WINDOWS){
Process process;
try {
//process = new ProcessBuilder(cmd).start();
String[] param_array = cmd.split("[\\s]+");
ProcessBuilder pb = new ProcessBuilder(param_array);
process = pb.start();
/*process=Runtime.getRuntime().exec(cmd);*/
int exitCode = process.waitFor();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
return sb.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
throw new ExecuteException(cmd + "执行出错!");
}
throw new UnHandledOSException("不支持本操作系统");
}
执行linux命令基,基本思路是从控制台获得输入的指令,启动命令行执行命令,捕捉异常,示例如下:
public class TestRunTime {
public static void main(String[] args) throws IOException, InterruptedException {
String cmd = "";
if(args == null || args.length == 0){
System.out.println("请输入命令行参数");
}else{
for(int i=0;iargs.length; i++){//获得输入的命令
cmd += args[i] + " ";
}
}
try {
Process process = Runtime.getRuntime().exec(cmd);//执行命令
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) {//输出结果
System.out.println(line);
}
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());//捕捉异常
}
}
}
1.
将文件压缩为 .gz 格式,只能压缩文件:gzip ①、命令名称:gzip ②、英文原意:GNU zip ③、命令所在路径:/bin/gzip ④、执行权限:所有用户 ...
2.
将 .gz 文件解压:gunzip
命令名称:gunzip