博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用shell命令解压.7z压缩包
阅读量:5873 次
发布时间:2019-06-19

本文共 2908 字,大约阅读时间需要 9 分钟。

hot3.png

Linux下解压.7z压缩包,java调用shell命令执行,解压速度是java程序解压的几十倍乃至更多,首先确认主机上已安装.7z命令。

package com.annet.upload.core.utils;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 执行shell解压命令 *  * @author yanhu * @date 2017/12/11 */public class ShellUtils {	// 基本路径	private static final String basePath = "/tmp/";	// 记录Shell执行状况的日志文件的位置(绝对路径)	private static final String executeShellLogFile = basePath + "executeShell.log";	private static Logger logger = LoggerFactory.getLogger(ShellUtils.class);	public static int executeShell(String shellCommand) throws Exception {		int success = 0;		StringBuffer stringBuffer = new StringBuffer();		BufferedReader bufferedReader = null;		// 格式化日期时间,记录日志时使用		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS ");		try {			stringBuffer.append(dateFormat.format(new Date())).append("准备执行Shell命令 ").append(shellCommand)					.append("\r\n");			Process pid = null;			String[] cmd = { "/bin/sh", "-c", shellCommand };			// 执行Shell命令			pid = Runtime.getRuntime().exec(cmd);			if (pid != null) {				stringBuffer.append("进程号:").append(pid.toString()).append("\r\n");				// bufferedReader用于读取Shell的输出内容				bufferedReader = new BufferedReader(new InputStreamReader(pid.getInputStream()), 1024);				pid.waitFor();			} else {				stringBuffer.append("没有pid\r\n");			}			stringBuffer.append(dateFormat.format(new Date())).append("Shell命令执行完毕\r\n执行结果为:\r\n");			String line = null;			// 读取Shell的输出内容,并添加到stringBuffer中			while (bufferedReader != null && (line = bufferedReader.readLine()) != null) {				stringBuffer.append(line).append("\r\n");			}			logger.info("解压完成");		} catch (Exception ioe) {			logger.error("执行Shell命令时发生异常:" + ioe.getMessage());			stringBuffer.append("执行Shell命令时发生异常:\r\n").append(ioe.getMessage()).append("\r\n");			throw ioe;		} finally {			if (bufferedReader != null) {				OutputStreamWriter outputStreamWriter = null;				try {					bufferedReader.close();					// 将Shell的执行情况输出到日志文件中					OutputStream outputStream = new FileOutputStream(executeShellLogFile);					outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");					outputStreamWriter.write(stringBuffer.toString());				} catch (Exception e) {					e.printStackTrace();				} finally {					outputStreamWriter.close();				}			}			success = 1;		}		return success;	}}
try {	long start = System.currentTimeMillis();	logger.info("开始解压:" + inputPath);    //拼接shell解压命令	shellCode = "7za -p" + password + " x " + inputPath + " -r -o" + unzipPath;	ShellUtils.executeShell(shellCode);	logger.info("解压耗时:" + ((System.currentTimeMillis() - start) / 1000) + "S");} catch (Exception e) {	e.printStackTrace();	return;}

 

转载于:https://my.oschina.net/pipimao/blog/1590609

你可能感兴趣的文章
《精通Spring 4.x 企业应用开发实战》读书笔记
查看>>
5月8日——iOS中的3D Touch效果
查看>>
Mongodb笔记(三)user && aggregate && mapReduce
查看>>
ubuntu中安装apache ab命令进行简单压力测试
查看>>
设计原则【1】
查看>>
Form Builder的三种查询方法构建
查看>>
用Emmet写前端代码
查看>>
一个深度学习博客
查看>>
Shell Script 学习一
查看>>
O036、Snapshot Instance 操作详解
查看>>
Auto 和 Decltye 的区别
查看>>
常用sql语句
查看>>
submit与button区别提交区别
查看>>
远程推送,集成极光的SDK,证书制造
查看>>
LeetCode-114. Flatten Binary Tree to Linked List
查看>>
Zedboard安装桌面系统ubuntu及opencv(2)
查看>>
函数声明优先级高于变量赋值
查看>>
20151217jqueryUI--自动补全工具
查看>>
链接脚本与重定位
查看>>
Hibernate 框架基本知识
查看>>