Java是一种流行的编程语言,被广泛应用于Web开发、移动开发、嵌入式系统开发等领域。而Linux是一种流行的操作系统,它的命令行界面为用户提供了强大的控制和操作能力。本文将探讨如何在Java代码中调用Linux的tar命令,实现文件的压缩和解压缩功能。
成都创新互联专注于东风企业网站建设,响应式网站建设,电子商务商城网站建设。东风网站建设公司,为东风等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
我们需要了解一下Linux的tar命令。tar命令是一个用于归档和压缩文件的命令行工具,它的用法如下:
“`
tar [options] [file/dir]
“`
其中,options是一些可选的选项,用于控制tar命令的行为,file/dir是要被处理的文件或目录。
下面是一些常用的选项:
– c:创建归档文件
– x:解压归档文件
– v:显示详细的处理过程
– z:使用gzip压缩/解压缩
– f:指定归档文件名
例如,要将目录/home/user/mydir压缩成一个归档文件mydir.tar.gz,可以使用以下命令:
“`
tar czvf mydir.tar.gz /home/user/mydir
“`
要将归档文件mydir.tar.gz解压缩到当前目录下,可以使用以下命令:
“`
tar xzvf mydir.tar.gz
“`
接下来,我们将使用Java代码调用Linux的tar命令,实现文件的压缩和解压缩功能。我们需要使用Java的Runtime类创建一个进程来执行Linux的tar命令。代码如下:
“`java
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(“tar czvf mydir.tar.gz /home/user/mydir”);
“`
这里我们使用了tar命令的-czvf选项,将目录/home/user/mydir压缩成mydir.tar.gz文件。
接下来,我们可以使用Java的InputStream和OutputStream将进程的输出和输入流连接起来,实现Java程序与进程之间的通信。代码如下:
“`java
InputStream inputStream = process.getInputStream();
OutputStream outputStream = process.getOutputStream();
“`
在压缩和解压缩过程中,我们需要读取和写入文件数据。Java语言提供了FileInputStream和FileOutputStream两个类,可以用于访问文件的输入和输出流。代码如下:
“`java
FileInputStream fileInputStream = new FileInputStream(“mydir.tar.gz”);
FileOutputStream fileOutputStream = new FileOutputStream(“mydir_new”);
“`
将以上三个流连接起来,就可以实现文件的压缩和解压缩功能。代码如下:
“`java
int count = 0;
byte[] buffer = new byte[1024];
while ((count = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, count);
}
“`
在这里,我们将输入流的数据读取到缓冲区中,然后将缓冲区的数据写入输出流中。
我们需要等待进程执行完毕,然后检查执行结果。代码如下:
“`java
int exitCode = process.wtFor();
if (exitCode == 0) {
System.out.println(“执行成功”);
} else {
System.out.println(“执行失败,退出码为:” + exitCode);
}
“`
在这里,我们使用Process的wtFor方法等待进程执行完毕,并返回进程的退出码。如果退出码为0,说明执行成功;否则说明执行失败。
以上代码片段演示了如何使用Java调用Linux的tar命令实现文件的压缩和解压缩功能。读者可以根据自己的需要进行修改和扩展。需要注意的是,由于Linux的tar命令是基于命令行界面的,因此在使用时需要了解Linux的命令行界面和基本操作,否则可能会出现一些问题。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-869222201.首先要去下载好JDK,Java SE 8的官方网址是
根据自己的系统版本来选择是要使用32位版还是64位版。Linux提供了两种安装方式一个是.rpm,另一个是.tar.gz,我所使用的是.tar.gz。在下载前不要忘了选择Accept License Agreement。
2.可以使用下面的命令来查看自己的系统是32位还是64位
getconf LONG_BIT
3.接下来我们对下载的文件进行解压
tar -zxvf jdk-8u102-linux-x64.tar.gz
4.然后我们来新建一个目录,并将解压好的文件移动过去
mkdir /usr/java
mv ./jdk1.8.0_102 /usr/java
5.然后我们来设置环境变量,这里我们需要修改/etc/profile文件
先用vim打开/etc/profile文件
vim /etc/profile
6.在文件最后添加下面的内容
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请根据自己的实际文件名作出更改
添加完成后,保存并退出。最后一步便是重启计算机。
reboot
计算机重启后我们可以在终端中输入java来检测是否配置成功
java
如果配置成功便会显示提示信息
用法: java class
(执行类)
或 java -jar jarfile
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 “server” VM
默认 VM 是 server,
因为您是在服务器类计算机上运行。判如
-cp
-classpath
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D=
设置系统属性
-verbose:
启用详细输出
-version 输出产品版本并退出
-version:
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X输出非标准选项的帮助
-ea
-enableassertions
按指定的粒度启用断言
-da
-disableassertions
禁用具有猛拆指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:
加载本机代理库 , 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:
按完整路径名加载本机代理库
-javaagent:
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:
使用指定的图像显示启动屏幕
三种配置环境变量的方法
1. 修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本则友编辑器打开/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
·重新登录或执行 sudo source /etc/profile
·注解
a. 假设你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录
b. linux下用冒号“:”来分隔烂弯路径
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
常见的错误。
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
2. 修改.bash_profile文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.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
·重新登录或执行source ~/.bash_profile
3. 直接在shell下设置变量
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
只需在shell终端执行下列命令:
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中设置java
1. 下载销顷jdk-6u43-linux-x64.bin,
增加可执行权伍斗旦限 chmod +x jdk-6u43-linux-x64.bin,
执行 ./jdk-6u43-linux-x64.bin 生成目录jdk1.6.0_43
拷贝到/usr/share下,mv jdk1.6.0_43 /usr/share
另外,jdk-6u43-linux-x64.bin将所有文件解压缩到当前目录的腔扰jdk$verison_$update目录,
jdk-6u43-linux-x64-rpm.bin解压缩生成rpm包,用rpm -ivh命令安装
2. 配置环境变量
在/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. 测试
# 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服务器不会重启,或者一次性使用java,可以直接在shell内依次输辩启入一下几条命令:
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、如果考虑到长久使用,且机器有可能会被重启掉,那么使用以下方法:
打开/etc/profile(用vi或简灶含者其他你自己拦笑喜欢的文本编辑器)
在文件末尾添加如下语句:
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后主要需要设运闷置两个地方
JAVA_HOME, apt/yum安装的jdk通常在/usr/lib/jvm下, 如/usr/lib/jvm/java-8-openjdk-amd64, mvn之类的工具依赖JAVA_HOME环境变量
PATH, 需要确保$JAVA_HOME/bin在PATH中
配置文件修改, 通常可以修改~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
要对所有用户生效可以编旁埋弯辑/etc/profile.d/java.sh, 添加
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
下载地址:
(目前最新为RAR 3.71 for Linux)
以最新的为准。
对于Window下的常见压缩文件.zip和.rar,Linux也嫌罩有相应的方法来解压它们:
1:对于.zip
linux下提供了zip和unzip程序,zip是压缩程芹大闹序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,举例说明一下其用法:
# zip all.zip *.jpg(这条命令是将所有.jpg的文件压缩成一个zip包)
# unzip all.zip(这条命令是将all.zip中的所有文件解压出来)
2:对于.rar
要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的;可从
下载RAR 3。60 for Linux ,然后安装其安装操作如下:
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,举例说明一下其用法
# rar a all *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名仿运后。
# unrar e all.rar
这条命令是将all.rar中的所有文件解压出来。
linux下的文件名引用的时候空格要加转义 比如
test file.rar 实际引用的时候就是 test\ file.rar
至于怎么解决 我就不再多说了哈
楼主试试这个代码~~
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格式压缩包
* 对应的是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));
/态山*
ant下的zip工具默认压缩编码为UTF-8编码,
而winRAR软件压缩是用的windows默认的GBK或者GB2312编码
所以解压缩时要制定编码格式
*/
e.setEncoding(“gbk”);
e.execute();
}catch(Exception e){
throw e;
}
}
/**
* 解压rar格式压缩包。
* 对应的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又会用到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 根据不同的操作系耐局统拿到相应的 destDirName 和 destFileName
String compressFileName = fh.getFileNameString().trim();
String destFileName = “”;
String destDirName = “”;
//非windows系统
if(File.separator.equals(“/”)){
destFileName = destDir + compressFileName.replaceAll(“\\\\”, “/”);
destDirName = destFileName.substring(0, destFileName.lastIndexOf(“/”));
//windows系统
}else{
destFileName = destDir + compressFileName.replaceAll(“/”, “\\\\”);
destDirName = destFileName.substring(0, destFileName.lastIndexOf(“\\”));
}
//2创建文件夹
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;
}
//根据类型,进行相应的解压缩
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当前环境设置为中文环境即可。山埋
修改/态唯晌etc/sysconfig/i18n 文件
LANG=”zh_CN.GB2312″
关于java 调用 linux tar的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都创新互联科技公司主营:网站设计、网站建设、小程序制作、成都软件开发、网页设计、微信开发、成都小程序开发、网站制作、网站开发等业务,是专业的成都做小程序公司、成都网站建设公司、成都做网站的公司。创新互联公司集小程序制作创意,网站制作策划,画册、网页、VI设计,网站、软件、微信、小程序开发于一体。
网页题目:Java如何调用Linux的tar命令(java调用linuxtar)
链接分享:http://www.mswzjz.cn/qtweb/news29/265429.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能