1. 程式人生 > >Java呼叫shell命令解壓.7z壓縮包

Java呼叫shell命令解壓.7z壓縮包

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

相關推薦

Java呼叫shell命令.7z壓縮

Linux下解壓.7z壓縮包,java呼叫shell命令執行,解壓速度是java程式解壓的幾十倍乃至更多,首先確認主機上已安裝.7z命令。 package com.annet.upload.core.utils; import java.io.Buffe

Java zip壓縮

ice gin inpu ret zipentry .get get next exce 因為最近項目需要批量上傳文件,而這裏的批量就是將文件壓縮在了一個zip包裏,然後讀取文件進行解析文件裏的內容。 因此需要先對上傳的zip包進行解壓。以下直接提供代碼供參考: 1.第一個

java呼叫shell命令並獲取執行結果

原文地址:http://blog.csdn.net/arkblue/article/details/7897396 使用到Process和Runtime兩個類,返回值通過Process類的getInputStream()方法獲取 package ark;

Java呼叫Shell命令和指令碼

1.介紹 有時候我們在Linux中執行Java程式時,需要呼叫一些Shell命令和指令碼。而Runtime.getRuntime().exec()方法給我們提供了這個功能,而且Runtime.getRuntime()給我們提供了以下幾種exec()方法: Process e

Mac上zip,rar,tar檔案命令壓縮

經常遇到在windowns上的壓縮檔案,在mac上解壓出現問題,特意總結了下在Terminal裡常用命令的方式解壓和壓縮檔案 1、zip壓縮檔案 zip命令的引數很多,可以利用"zip --help"

python程序rar壓縮報錯

ould gcc-c++ root 產生 pytho oot exp import 依賴包 運行如下python程序報錯Couldn't find path to unrar library的解決辦法:#!/usr/bin/python #-*- coding:ut

C++zip壓縮(2)

由於上一篇部落格寫的比較急,沒有給出直接執行的程式碼跟演示,這裡我重新寫了一個專案 上一篇部落格C++解壓壓縮檔案 上一篇部落格中有ziputils官網的連結更下載地址,使用方法還是一樣,向專案中新增檔案 #include <Windows.h> //新

python zip壓縮

  在當前路徑解壓zip壓縮包,生成同名資料夾,內部目錄結構與壓縮包一致 import zipfile import os def un_zip(file_name): """unzip zip file""" zip_file = zipfile.ZipFile(

PHPZIP壓縮,解決中文亂碼問題

修復原生ZipArchive的中文亂碼問題 測試環境是windows10 中文的zip壓縮包名和中文的檔名會導致PHP原生自帶的ZipArchive亂碼,導致extractTo方法失效: &l

JAVA利用cmd命令呼叫WINRAR壓縮

  JAVA利用cmd命令列呼叫WINRAR解壓及壓縮     前言 對於zip檔案,java有自帶類庫java.util.zip;可是要想解壓rar檔案只能靠第三方類庫,我試過兩個:com.github.junrar和de.innosystec.u

Java.7z格式壓縮

package com.annet.upload.core.utils; import java.io.File; import java.io.FileOutputStream; import java.io.RandomAccessFile; import

java呼叫shell命令

import java.io.BufferedReader; import java.io.InputStreamReader; public class Shell { public static void main(String[] args) { String command =

Java 壓縮通用工具 ZIP TAR GZ

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutp

Linux 伺服器下壓縮命令

1.壓縮命令:    命令格式:tar  -zcvf   壓縮檔名.tar.gz   被壓縮檔名       2.解壓縮命令:   命令格式:tar  -zxvf &nb

shell指令碼 刪除 在壓縮

#建立資料夾 mkdir -p /tmp/jarDel/; rm -rf /tmp/jarDel/*; #找到jar mv /weblogic/gt3nf-service-gdslhbs/WEB-INF/lib/gov.chinatax.gt3nf-2* /tmp/jarDel/ ; #進入到目

shell指令碼小工具之萬能壓縮器---實現思路

本人也是接觸linux很久了。但是對系統的架構也是一知半解,平時的使用情況也就是一鍵安裝lnmp,頂多裝redis,自己一直都專注於web開發,很少去接觸系統運維方面的知識。一直覺得linux是一個很高大上的系統,一出錯我根本無從下手。只能把錯誤丟給百度,或者goo

java 壓縮

最近經常用到解壓和壓縮,一般支援rar和zip, rar:只有解壓是共享的,所以用到rar.exe解壓rar。壓縮的話使用zip.exe壓縮 兩個exe見附件。 zip:java自帶jar包,但是隻支援utf-8編碼,解壓遇到非utf8中文就會出錯。 整合了一個zip.ja

pyhton system 使用7z壓縮

#coding:utf-8import os  '''環境:windows10 壓縮工具:7z.exe實現語言:python語言版本:2.7*****網上提供了一堆坑人的解壓方法,本想省點事快速搞定 奶奶個腿的  都怪自己太懶反倒浪費了更多時間****這裡只針對壓縮和解壓縮檔

unix下常用壓縮命令

.tar解包: tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是壓縮!)---------------------------------------------.gz解壓1:gunzip File

Linux 檔案的壓縮 —— gzip命令

一、gzip 命令的用途 gzip 是在 Linux 系統中經常使用的一個對檔案進行壓縮和解壓縮的命令 減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間