新聞中心
Java是一種流行的編程語(yǔ)言,被廣泛應(yīng)用于Web開發(fā)、移動(dòng)開發(fā)、嵌入式系統(tǒng)開發(fā)等領(lǐng)域。而Linux是一種流行的操作系統(tǒng),它的命令行界面為用戶提供了強(qiáng)大的控制和操作能力。本文將探討如何在Java代碼中調(diào)用Linux的tar命令,實(shí)現(xiàn)文件的壓縮和解壓縮功能。

成都創(chuàng)新互聯(lián)專注于東風(fēng)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。東風(fēng)網(wǎng)站建設(shè)公司,為東風(fēng)等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
我們需要了解一下Linux的tar命令。tar命令是一個(gè)用于歸檔和壓縮文件的命令行工具,它的用法如下:
“`
tar [options] [file/dir]
“`
其中,options是一些可選的選項(xiàng),用于控制tar命令的行為,file/dir是要被處理的文件或目錄。
下面是一些常用的選項(xiàng):
– c:創(chuàng)建歸檔文件
– x:解壓歸檔文件
– v:顯示詳細(xì)的處理過(guò)程
– z:使用gzip壓縮/解壓縮
– f:指定歸檔文件名
例如,要將目錄/home/user/mydir壓縮成一個(gè)歸檔文件mydir.tar.gz,可以使用以下命令:
“`
tar czvf mydir.tar.gz /home/user/mydir
“`
要將歸檔文件mydir.tar.gz解壓縮到當(dāng)前目錄下,可以使用以下命令:
“`
tar xzvf mydir.tar.gz
“`
接下來(lái),我們將使用Java代碼調(diào)用Linux的tar命令,實(shí)現(xiàn)文件的壓縮和解壓縮功能。我們需要使用Java的Runtime類創(chuàng)建一個(gè)進(jìn)程來(lái)執(zhí)行Linux的tar命令。代碼如下:
“`java
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(“tar czvf mydir.tar.gz /home/user/mydir”);
“`
這里我們使用了tar命令的-czvf選項(xiàng),將目錄/home/user/mydir壓縮成mydir.tar.gz文件。
接下來(lái),我們可以使用Java的InputStream和OutputStream將進(jìn)程的輸出和輸入流連接起來(lái),實(shí)現(xiàn)Java程序與進(jìn)程之間的通信。代碼如下:
“`java
InputStream inputStream = process.getInputStream();
OutputStream outputStream = process.getOutputStream();
“`
在壓縮和解壓縮過(guò)程中,我們需要讀取和寫入文件數(shù)據(jù)。Java語(yǔ)言提供了FileInputStream和FileOutputStream兩個(gè)類,可以用于訪問(wèn)文件的輸入和輸出流。代碼如下:
“`java
FileInputStream fileInputStream = new FileInputStream(“mydir.tar.gz”);
FileOutputStream fileOutputStream = new FileOutputStream(“mydir_new”);
“`
將以上三個(gè)流連接起來(lái),就可以實(shí)現(xiàn)文件的壓縮和解壓縮功能。代碼如下:
“`java
int count = 0;
byte[] buffer = new byte[1024];
while ((count = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, count);
}
“`
在這里,我們將輸入流的數(shù)據(jù)讀取到緩沖區(qū)中,然后將緩沖區(qū)的數(shù)據(jù)寫入輸出流中。
我們需要等待進(jìn)程執(zhí)行完畢,然后檢查執(zhí)行結(jié)果。代碼如下:
“`java
int exitCode = process.wtFor();
if (exitCode == 0) {
System.out.println(“執(zhí)行成功”);
} else {
System.out.println(“執(zhí)行失敗,退出碼為:” + exitCode);
}
“`
在這里,我們使用Process的wtFor方法等待進(jìn)程執(zhí)行完畢,并返回進(jìn)程的退出碼。如果退出碼為0,說(shuō)明執(zhí)行成功;否則說(shuō)明執(zhí)行失敗。
以上代碼片段演示了如何使用Java調(diào)用Linux的tar命令實(shí)現(xiàn)文件的壓縮和解壓縮功能。讀者可以根據(jù)自己的需要進(jìn)行修改和擴(kuò)展。需要注意的是,由于Linux的tar命令是基于命令行界面的,因此在使用時(shí)需要了解Linux的命令行界面和基本操作,否則可能會(huì)出現(xiàn)一些問(wèn)題。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220linux 中怎么設(shè)置java
1.首先要去下載好JDK,Java SE 8的官方網(wǎng)址是
根據(jù)自己的系統(tǒng)版本來(lái)選擇是要使用32位版還是64位版。Linux提供了兩種安裝方式一個(gè)是.rpm,另一個(gè)是.tar.gz,我所使用的是.tar.gz。在下載前不要忘了選擇Accept License Agreement。
2.可以使用下面的命令來(lái)查看自己的系統(tǒng)是32位還是64位
getconf LONG_BIT
3.接下來(lái)我們對(duì)下載的文件進(jìn)行解壓
tar -zxvf jdk-8u102-linux-x64.tar.gz
4.然后我們來(lái)新建一個(gè)目錄,并將解壓好的文件移動(dòng)過(guò)去
mkdir /usr/java
mv ./jdk1.8.0_102 /usr/java
5.然后我們來(lái)設(shè)置環(huán)境變量,這里我們需要修改/etc/profile文件
先用vim打開/etc/profile文件
vim /etc/profile
6.在文件最后添加下面的內(nèi)容
JAVA_HOME=/usr/java/jdk1.8.0_102
export JRE_HOME=/usr/java/jdk1.8.0_102/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
其中的jdk1.8.0_102請(qǐng)根據(jù)自己的實(shí)際文件名作出更改
添加完成后,保存并退出。最后一步便是重啟計(jì)算機(jī)。
reboot
計(jì)算機(jī)重啟后我們可以在終端中輸入java來(lái)檢測(cè)是否配置成功
java
如果配置成功便會(huì)顯示提示信息
用法: java class
(執(zhí)行類)
或 java -jar jarfile
(執(zhí)行 jar 文件)
其中選項(xiàng)包括:
-d32 使用 32 位數(shù)據(jù)模型 (如果可用)
-d64 使用 64 位數(shù)據(jù)模型 (如果可用)
-server 選擇 “server” VM
默認(rèn) VM 是 server,
因?yàn)槟窃诜?wù)器類計(jì)算機(jī)上運(yùn)行。判如
-cp
-classpath
用 : 分隔的目錄, JAR 檔案
和 ZIP 檔案列表, 用于搜索類文件。
-D=
設(shè)置系統(tǒng)屬性
-verbose:
啟用詳細(xì)輸出
-version 輸出產(chǎn)品版本并退出
-version:
警告: 此功能已過(guò)時(shí), 將在
未來(lái)發(fā)行版中刪除。
需要指定的版本才能運(yùn)行
-showversion 輸出產(chǎn)品版本并繼續(xù)
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已過(guò)時(shí), 將在
未來(lái)發(fā)行版中刪除。
在版本搜索中包括/排除用戶專用 JRE
-? -help 輸出此幫助消息
-X輸出非標(biāo)準(zhǔn)選項(xiàng)的幫助
-ea
-enableassertions
按指定的粒度啟用斷言
-da
-disableassertions
禁用具有猛拆指定粒度的斷言
-esa | -enablesystemassertions
啟用系統(tǒng)斷言
-dsa | -disablesystemassertions
禁用系統(tǒng)斷言
-agentlib:
加載本機(jī)代理庫(kù) , 例如 -agentlib:hprof
另請(qǐng)參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:
按完整路徑名加載本機(jī)代理庫(kù)
-javaagent:
加載 Java 編程語(yǔ)言代理, 請(qǐng)參閱 java.lang.instrument
-splash:
使用指定的圖像顯示啟動(dòng)屏幕
三種配置環(huán)境變量的方法
1. 修改/etc/profile文件
如果你的計(jì)算機(jī)僅僅作為開發(fā)使用時(shí)推薦使用這種方法,因?yàn)樗杏脩舻膕hell都有權(quán)使用這些環(huán)境變量,可能會(huì)給系統(tǒng)帶來(lái)安全性問(wèn)題。
·用文本則友編輯器打開/etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登錄或執(zhí)行 sudo source /etc/profile
·注解
a. 假設(shè)你要將 /usr/share/jdk1.6.0_14改為你的jdk安裝目錄
b. linux下用冒號(hào)“:”來(lái)分隔爛彎路徑
c. $PATH / $CLASSPATH / $JAVA_HOME 是用來(lái)引用原來(lái)的環(huán)境變量的值
在設(shè)置環(huán)境變量時(shí)特別要注意不能把原來(lái)的值給覆蓋掉了,這是一種
常見(jiàn)的錯(cuò)誤。
d. CLASSPATH中當(dāng)前目錄“.”不能丟,把當(dāng)前目錄丟掉也是常見(jiàn)的錯(cuò)誤。
e. export是把這三個(gè)變量導(dǎo)出為全局變量。
f. 大小寫必須嚴(yán)格區(qū)分。
2. 修改.bash_profile文件
這種方法更為安全,它可以把使用這些環(huán)境變量的權(quán)限控制到用戶級(jí)別,如果你需要給某個(gè)用戶權(quán)限使用這些環(huán)境變量,你只需要修改其個(gè)人用戶主目錄下的.bash_profile文件就可以了。
·用文本編輯器打開用戶目錄下的.bash_profile文件
·在.bash_profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登錄或執(zhí)行source ~/.bash_profile
3. 直接在shell下設(shè)置變量
不贊成使用這種方法,因?yàn)閾Q個(gè)shell,你的設(shè)置就無(wú)效了,因此這種方法僅僅是臨時(shí)使用,以后要使用的時(shí)候又要重新設(shè)置,比較麻煩。
只需在shell終端執(zhí)行下列命令:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export 饑盯悶CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
Linux下Java安裝與配置
以JDK1.6.0_43為例介紹一下如何在linux中設(shè)置java
1. 下載銷頃jdk-6u43-linux-x64.bin,
增加可執(zhí)行權(quán)伍斗旦限 chmod +x jdk-6u43-linux-x64.bin,
執(zhí)行 ./jdk-6u43-linux-x64.bin 生成目錄jdk1.6.0_43
拷貝到/usr/share下,mv jdk1.6.0_43 /usr/share
另外,jdk-6u43-linux-x64.bin將所有文件解壓縮到當(dāng)前目錄的腔擾jdk$verison_$update目錄,
jdk-6u43-linux-x64-rpm.bin解壓縮生成rpm包,用rpm -ivh命令安裝
2. 配置環(huán)境變量
在/etc/profile下增加
# set Java environment
JAVA_HOME=/usr/share/jdk1.6.0_43
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
3. 測(cè)試
# echo $JAVA_HOME
/usr/share/jdk1.6.0_43
# echo $PATH
/usr/share/jdk1.6.0_43/bin:/usr/lib64/qt-3.3/bin:/usr/local/in:/usr/local/bin:/in:/bin:/usr/in:/usr/bin:/root/bin
# echo $CLASSPATH
.:/usr/share/jdk1.6.0_43/lib/dt.jar:/usr/share/jdk1.6.0_43/lib/tools.jar
# java -version
java version “1.6.0_43”
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
1、如果你的linux服務(wù)器不會(huì)重啟,或者一次性使用java,可以直接在shell內(nèi)依次輸辯啟入一下幾條命令:
export JAVA_HOME=/usr/share/jdk1.8.0_71
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2、如果考慮到長(zhǎng)久使用,且機(jī)器有可能會(huì)被重啟掉,那么使用以下方法:
打開/etc/profile(用vi或簡(jiǎn)灶含者其他你自己攔笑喜歡的文本編輯器)
在文件末尾添加如下語(yǔ)句:
JAVA_HOME=/usr/java/default
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
linux上安裝java后主要需要設(shè)運(yùn)悶置兩個(gè)地方
JAVA_HOME, apt/yum安裝的jdk通常在/usr/lib/jvm下, 如/usr/lib/jvm/java-8-openjdk-amd64, mvn之類的工具依賴JAVA_HOME環(huán)境變量
PATH, 需要確保$JAVA_HOME/bin在PATH中
配置文件修改, 通常可以修改~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
要對(duì)所有用戶生效可以編旁埋彎輯/etc/profile.d/java.sh, 添加
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
在LINUX下 用JAVA如何解壓rar文件
下載地址:
(目前最新為RAR 3.71 for Linux)
以最新的為準(zhǔn)。
對(duì)于Window下的常見(jiàn)壓縮文件.zip和.rar,Linux也嫌罩有相應(yīng)的方法來(lái)解壓它們:
1:對(duì)于.zip
linux下提供了zip和unzip程序,zip是壓縮程芹大鬧序,unzip是解壓程序。它們的參數(shù)選項(xiàng)很多,這里只做簡(jiǎn)單介紹,舉例說(shuō)明一下其用法:
# zip all.zip *.jpg(這條命令是將所有.jpg的文件壓縮成一個(gè)zip包)
# unzip all.zip(這條命令是將all.zip中的所有文件解壓出來(lái))
2:對(duì)于.rar
要在linux下處理.rar文件,需要安裝RAR for Linux,可以從網(wǎng)上下載,但要記住,RAR for Linux不是免費(fèi)的;可從
下載RAR 3。60 for Linux ,然后安裝其安裝操作如下:
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
這樣就安裝好了,安裝后就有了rar和unrar這兩個(gè)程序,rar是壓縮程序,unrar是解壓程序。它們的參數(shù)選項(xiàng)很多,舉例說(shuō)明一下其用法
# rar a all *.jpg
這條命令是將所有.jpg的文件壓縮成一個(gè)rar包,名為all.rar,該程序會(huì)將.rar 擴(kuò)展名將自動(dòng)附加到包名仿運(yùn)后。
# unrar e all.rar
這條命令是將all.rar中的所有文件解壓出來(lái)。
linux下的文件名引用的時(shí)候空格要加轉(zhuǎn)義 比如
test file.rar 實(shí)際引用的時(shí)候就是 test\ file.rar
至于怎么解決 我就不再多說(shuō)了哈
樓主試試這個(gè)代碼~~
package decompress;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import de.innosystec.unrar.Archive;
import de.innosystec.unrar.rarfile.FileHeader;
public class DeCompressUtil {
/昌閉讓**
* 解壓zip格式壓縮包
* 對(duì)應(yīng)的是ant.jar
*/
private static void unzip(String sourceZip,String destDir) throws Exception{
try{
Project p = new Project();
Expand e = new Expand();
e.setProject(p);
e.setSrc(new File(sourceZip));
e.setOverwrite(false);
e.setDest(new File(destDir));
/態(tài)山*
ant下的zip工具默認(rèn)壓縮編碼為UTF-8編碼,
而winRAR軟件壓縮是用的windows默認(rèn)的GBK或者GB2312編碼
所以解壓縮時(shí)要制定編碼格式
*/
e.setEncoding(“gbk”);
e.execute();
}catch(Exception e){
throw e;
}
}
/**
* 解壓rar格式壓縮包。
* 對(duì)應(yīng)的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又會(huì)用到commons-logging-1.1.1.jar
*/
private static void unrar(String sourceRar,String destDir) throws Exception{
Archive a = null;
FileOutputStream fos = null;
try{
a = new Archive(new File(sourceRar));
FileHeader fh = a.nextFileHeader();
while(fh!=null){
if(!fh.isDirectory()){
//1 根據(jù)不同的操作系耐局統(tǒng)拿到相應(yīng)的 destDirName 和 destFileName
String compressFileName = fh.getFileNameString().trim();
String destFileName = “”;
String destDirName = “”;
//非windows系統(tǒng)
if(File.separator.equals(“/”)){
destFileName = destDir + compressFileName.replaceAll(“\\\\”, “/”);
destDirName = destFileName.substring(0, destFileName.lastIndexOf(“/”));
//windows系統(tǒng)
}else{
destFileName = destDir + compressFileName.replaceAll(“/”, “\\\\”);
destDirName = destFileName.substring(0, destFileName.lastIndexOf(“\\”));
}
//2創(chuàng)建文件夾
File dir = new File(destDirName);
if(!dir.exists()||!dir.isDirectory()){
dir.mkdirs();
}
//3解壓縮文件
fos = new FileOutputStream(new File(destFileName));
a.extractFile(fh, fos);
fos.close();
fos = null;
}
fh = a.nextFileHeader();
}
a.close();
a = null;
}catch(Exception e){
throw e;
}finally{
if(fos!=null){
try{fos.close();fos=null;}catch(Exception e){e.printStackTrace();}
}
if(a!=null){
try{a.close();a=null;}catch(Exception e){e.printStackTrace();}
}
}
}
/**
* 解壓縮
*/
public static void deCompress(String sourceFile,String destDir) throws Exception{
//保證文件夾路徑最后是”/”或者”\”
char lastChar = destDir.charAt(destDir.length()-1);
if(lastChar!=’/’&&lastChar!=’\\’){
destDir += File.separator;
}
//根據(jù)類型,進(jìn)行相應(yīng)的解壓縮
String type = sourceFile.substring(sourceFile.lastIndexOf(“.”)+1);
if(type.equals(“zip”)){
DeCompressUtil.unzip(sourceFile, destDir);
}else if(type.equals(“rar”)){
DeCompressUtil.unrar(sourceFile, destDir);
}else{
throw new Exception(“只支持zip和rar格式的壓縮包!”);
}
}
}
將帆鋒linux當(dāng)前環(huán)境設(shè)置為中文環(huán)境即可。山埋
修改/態(tài)唯晌etc/sysconfig/i18n 文件
LANG=”zh_CN.GB2312″
關(guān)于java 調(diào)用 linux tar的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
當(dāng)前名稱:Java如何調(diào)用Linux的tar命令(java調(diào)用linuxtar)
轉(zhuǎn)載來(lái)于:http://m.5511xx.com/article/djsjgis.html


咨詢
建站咨詢
