- 浏览: 747782 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
package com.mjp.upgrade.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.FileUtils;
public class JarUtils {
/**
* 创建空的临时目录
*
* @return
*/
public static File createTempDirectory() {
final String tmpPath = System.getProperty("java.io.tmpdir");
long current = System.currentTimeMillis();
File tmpDir = new File(tmpPath + File.separator + "patchDir" + current);
if (tmpDir.exists()) {
tmpDir.delete();
return createTempDirectory();
}
tmpDir.mkdirs();
return tmpDir;
}
/**
* 解压jar文件
*
* @param jarFile
* 要解压的jar文件路径
* @param destination
* 解压到哪里
* @throws IOException
*/
public static void unJar(String jarFile, String destination) {
File jar = new File(jarFile);
File dir = new File(destination);
unJar(jar, dir);
}
/**
* 解压jar文件
*
* @param jarFile
* 要解压的jar文件路径
* @param destination
* 解压到哪里
* @throws IOException
*/
public static void unJar(File jarFile, File destination) {
JarFile jar = null;
try {
if (destination.exists() == false) {
destination.mkdirs();
}
jar = new JarFile(jarFile);
Enumeration<JarEntry> en = jar.entries();
JarEntry entry = null;
InputStream input = null;
BufferedOutputStream bos = null;
File file = null;
while (en.hasMoreElements()) {
entry = en.nextElement();
input = jar.getInputStream(entry);
file = new File(destination, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
continue;
} else {
file.getParentFile().mkdirs();
}
bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] buffer = new byte[8192];
int length = -1;
while (true) {
length = input.read(buffer);
if (length == -1)
break;
bos.write(buffer, 0, length);
}
bos.close();
input.close();
// IOUtils.copy(input, bos);
}
Manifest mf = jar.getManifest();
if (mf != null) {
File f = new File(destination, "META-INF/MANIFEST.MF");
File parent = f.getParentFile();
if (parent.exists() == false) {
parent.mkdirs();
}
OutputStream out = new FileOutputStream(f);
mf.write(out);
out.flush();
out.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (jar != null) {
try {
jar.close();
} catch (Exception e) {
}
}
}
}
public static String convertPackageToPath(String packageName) {
String sep = File.separator;
if (packageName.equals("")) {
return sep;
} else {
return packageName.replace(".", sep) + sep;
}
}
/**
* @param packageName
* @param sourceFile
* @param targetJarFile
*/
public static void addFileToJar(String packageName, File sourceFile,
File targetJarFile) {
try {
File tmpDir = createTempDirectory();
unJar(targetJarFile, tmpDir);
String packagePath = convertPackageToPath(packageName);
File targetFile = new File(tmpDir, packagePath);
if(sourceFile.isDirectory()){
FileUtils.copyDirectoryToDirectory(sourceFile, targetFile);
}else{
FileUtils.copyFileToDirectory(sourceFile, targetFile);
}
jar(targetJarFile, tmpDir);
FileUtils.deleteDirectory(tmpDir);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* @param packageName
* @param sourceFile
* @param targetJarFile
*/
public static void delFileFromJar(String packageName, File sourceFile,
File targetJarFile) {
try {
File tmpDir = createTempDirectory();
unJar(targetJarFile, tmpDir);
String packagePath = convertPackageToPath(packageName);
File targetFile = new File(tmpDir, packagePath);
targetFile = new File(targetFile, sourceFile.getName());
if(targetFile.exists()){
targetFile.delete();
}
jar(targetJarFile, tmpDir);
FileUtils.deleteDirectory(tmpDir);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 压缩临时文件目录为jar文件 替换jarFile
*
* @param jarFile
* target
* @param tmpDirectory
*/
public static void jar(File jarFile, File tmpDirectory) {
if (jarFile == null || tmpDirectory == null
|| jarFile.exists() == false || tmpDirectory.exists() == false) {
return;
}
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
jarFile));
BufferedInputStream bis;
List<File> fileList = getAllFiles(tmpDirectory);
for (int i = 0; i < fileList.size(); i++) {
File file = (File) fileList.get(i);
zos
.putNextEntry(new ZipEntry(getEntryName(tmpDirectory,
file)));
if (file.isDirectory()) {
continue;
}
bis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[8192];
int length = -1;
while (true) {
length = bis.read(buffer);
if (length == -1)
break;
zos.write(buffer, 0, length);
}
bis.close();
// IOUtils.copy(bis, zos);
zos.closeEntry();
}
zos.close();
} catch (Exception ex) {
}
}
public static List<File> getAllFiles(File file) {
List<File> result = new ArrayList<File>();
if (file != null) {
if (file.isDirectory()) {
File[] ls = file.listFiles();
for (File t : ls) {
List<File> tLst = getAllFiles(t);
result.addAll(tLst);
}
} else {
result.add(file);
}
}
return result;
}
/**
* 获得zip entry 字符串
*
* @param base
* @param file
* @return
*/
public static String getEntryName(File baseFile, File file) {
String fileName = file.getPath();
String result = "";
try {
if (baseFile.getParentFile().getParentFile() == null) {
result = fileName.substring(baseFile.getPath()
.length());
} else {
result = fileName.substring(baseFile.getPath()
.length() + 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
String a = "com.mjp.core.aa";
String b = convertPackageToPath(a);
System.out.println(b);
}
}
==================
以上代码在 linux下运行 打好的 jar ,出问题,原因是没有对 目录entry文件进行处理
以下代码 测试通过:
/**jar -cvf
* @param desJar
* @param jarDir
* @throws Exception
*/
public static void jar(File desJar,File jarDir) throws Exception{
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(desJar));
File[] src = jarDir.listFiles();
jar(out,src);
}
/**
* @param out
* @param src
*/
public static void jar(OutputStream out,File[] src)throws Exception{
jar(out,src,null,null);
}
/**
* @param out
* @param src
*/
public static void jar(OutputStream out,File src)throws Exception{
jar(out,new File[]{src},null,null);
}
/**
* @param out
* @param src
* @param prefix
* @param man
* @throws Exception
*/
public static void jar(OutputStream out,File[] src,String prefix,Manifest man) throws Exception{
JarOutputStream jout = null ;
if (man == null){
jout = new JarOutputStream(out);
}else{
jout = new JarOutputStream(out,man);
}
if(prefix != null && prefix.trim().length() >0 && !prefix.equals("/")){
if(prefix.charAt(0) == '/'){
prefix = prefix.substring(1);
}
if(prefix.charAt(prefix.length() -1) !='/'){
prefix = prefix + "/";
}
}else{
prefix = "";
}
for(File f : src){
jar(f,prefix,jout);
}
jout.close();
}
/**
* @param src
* @param prefix
* @param jout
*/
private static void jar(File src,String prefix,JarOutputStream jout) throws Exception{
if(src.isDirectory()){
prefix = prefix + src.getName() + "/";
ZipEntry entry = new ZipEntry(prefix);
entry.setTime(src.lastModified());
entry.setMethod(JarOutputStream.STORED);
entry.setSize(0l);
entry.setCrc(0l);
jout.putNextEntry(entry);
jout.closeEntry();
File[] files = src.listFiles();
if(files != null){
for(File file : files){
jar(file,prefix,jout);
}
}
}else{
byte[] buffer = new byte[8092];
ZipEntry entry = new ZipEntry(prefix + src.getName());
entry.setTime(src.lastModified());
jout.putNextEntry(entry);
FileInputStream in = new FileInputStream(src);
int len;
while((len = in.read(buffer,0,buffer.length)) != -1){
jout.write(buffer,0,len);
}
in.close();
jout.closeEntry();
}
}
/**jar -xvf
* @param jarFile
* @param unJarDir
*/
public static void unJar(File jarFile,File unJarDir) throws Exception{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(jarFile));
unJar(in,unJarDir);
}
/**
* @param in
* @param unJarDir
*/
public static void unJar(InputStream in,File unJarDir) throws Exception{
if(!unJarDir.exists()){
unJarDir.mkdirs();
}
JarInputStream jin = new JarInputStream(in);
byte[] buffer = new byte[8092];
ZipEntry entry = jin.getNextEntry();
while(entry != null){
String fileName = entry.getName();
if(File.separatorChar != '/'){
fileName = fileName.replace('/', File.separatorChar);
}
if(fileName.charAt(fileName.length() -1 ) == '/'){
fileName = fileName.substring(0,fileName.length() -1);
}
if(fileName.charAt(0)== '/'){
fileName = fileName.substring(1);
}
File file = new File(unJarDir,fileName);
if(entry.isDirectory()){
file.mkdirs();
}else{
File parent = file.getParentFile();
if(!parent.exists()){
parent.mkdirs();
}
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
int len = 0;
while((len = jin.read(buffer,0,buffer.length)) != -1){
out.write(buffer,0,len);
}
out.flush();
out.close();
file.setLastModified(entry.getTime());
}
jin.closeEntry();
entry = jin.getNextEntry();
}
Manifest mf = jin.getManifest();
if(mf != null){
File file = new File(unJarDir,"META-INF/MANIFEST.MF");
File parent = file.getParentFile();
if(!parent.exists()){
parent.mkdirs();
}
OutputStream out = new FileOutputStream(file);
mf.write(out);
out.flush();
out.close();
}
jin.close();
}
public static void main(String[] args) throws Exception {
File jarF = new File("c:/test/a.jar");
File bjar = new File("c:/test/b.jar");
File unJarDir = new File("c:/test/aa");
unJar(jarF, unJarDir);
jar(bjar,unJarDir);
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.FileUtils;
public class JarUtils {
/**
* 创建空的临时目录
*
* @return
*/
public static File createTempDirectory() {
final String tmpPath = System.getProperty("java.io.tmpdir");
long current = System.currentTimeMillis();
File tmpDir = new File(tmpPath + File.separator + "patchDir" + current);
if (tmpDir.exists()) {
tmpDir.delete();
return createTempDirectory();
}
tmpDir.mkdirs();
return tmpDir;
}
/**
* 解压jar文件
*
* @param jarFile
* 要解压的jar文件路径
* @param destination
* 解压到哪里
* @throws IOException
*/
public static void unJar(String jarFile, String destination) {
File jar = new File(jarFile);
File dir = new File(destination);
unJar(jar, dir);
}
/**
* 解压jar文件
*
* @param jarFile
* 要解压的jar文件路径
* @param destination
* 解压到哪里
* @throws IOException
*/
public static void unJar(File jarFile, File destination) {
JarFile jar = null;
try {
if (destination.exists() == false) {
destination.mkdirs();
}
jar = new JarFile(jarFile);
Enumeration<JarEntry> en = jar.entries();
JarEntry entry = null;
InputStream input = null;
BufferedOutputStream bos = null;
File file = null;
while (en.hasMoreElements()) {
entry = en.nextElement();
input = jar.getInputStream(entry);
file = new File(destination, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
continue;
} else {
file.getParentFile().mkdirs();
}
bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] buffer = new byte[8192];
int length = -1;
while (true) {
length = input.read(buffer);
if (length == -1)
break;
bos.write(buffer, 0, length);
}
bos.close();
input.close();
// IOUtils.copy(input, bos);
}
Manifest mf = jar.getManifest();
if (mf != null) {
File f = new File(destination, "META-INF/MANIFEST.MF");
File parent = f.getParentFile();
if (parent.exists() == false) {
parent.mkdirs();
}
OutputStream out = new FileOutputStream(f);
mf.write(out);
out.flush();
out.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (jar != null) {
try {
jar.close();
} catch (Exception e) {
}
}
}
}
public static String convertPackageToPath(String packageName) {
String sep = File.separator;
if (packageName.equals("")) {
return sep;
} else {
return packageName.replace(".", sep) + sep;
}
}
/**
* @param packageName
* @param sourceFile
* @param targetJarFile
*/
public static void addFileToJar(String packageName, File sourceFile,
File targetJarFile) {
try {
File tmpDir = createTempDirectory();
unJar(targetJarFile, tmpDir);
String packagePath = convertPackageToPath(packageName);
File targetFile = new File(tmpDir, packagePath);
if(sourceFile.isDirectory()){
FileUtils.copyDirectoryToDirectory(sourceFile, targetFile);
}else{
FileUtils.copyFileToDirectory(sourceFile, targetFile);
}
jar(targetJarFile, tmpDir);
FileUtils.deleteDirectory(tmpDir);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* @param packageName
* @param sourceFile
* @param targetJarFile
*/
public static void delFileFromJar(String packageName, File sourceFile,
File targetJarFile) {
try {
File tmpDir = createTempDirectory();
unJar(targetJarFile, tmpDir);
String packagePath = convertPackageToPath(packageName);
File targetFile = new File(tmpDir, packagePath);
targetFile = new File(targetFile, sourceFile.getName());
if(targetFile.exists()){
targetFile.delete();
}
jar(targetJarFile, tmpDir);
FileUtils.deleteDirectory(tmpDir);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 压缩临时文件目录为jar文件 替换jarFile
*
* @param jarFile
* target
* @param tmpDirectory
*/
public static void jar(File jarFile, File tmpDirectory) {
if (jarFile == null || tmpDirectory == null
|| jarFile.exists() == false || tmpDirectory.exists() == false) {
return;
}
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
jarFile));
BufferedInputStream bis;
List<File> fileList = getAllFiles(tmpDirectory);
for (int i = 0; i < fileList.size(); i++) {
File file = (File) fileList.get(i);
zos
.putNextEntry(new ZipEntry(getEntryName(tmpDirectory,
file)));
if (file.isDirectory()) {
continue;
}
bis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[8192];
int length = -1;
while (true) {
length = bis.read(buffer);
if (length == -1)
break;
zos.write(buffer, 0, length);
}
bis.close();
// IOUtils.copy(bis, zos);
zos.closeEntry();
}
zos.close();
} catch (Exception ex) {
}
}
public static List<File> getAllFiles(File file) {
List<File> result = new ArrayList<File>();
if (file != null) {
if (file.isDirectory()) {
File[] ls = file.listFiles();
for (File t : ls) {
List<File> tLst = getAllFiles(t);
result.addAll(tLst);
}
} else {
result.add(file);
}
}
return result;
}
/**
* 获得zip entry 字符串
*
* @param base
* @param file
* @return
*/
public static String getEntryName(File baseFile, File file) {
String fileName = file.getPath();
String result = "";
try {
if (baseFile.getParentFile().getParentFile() == null) {
result = fileName.substring(baseFile.getPath()
.length());
} else {
result = fileName.substring(baseFile.getPath()
.length() + 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
String a = "com.mjp.core.aa";
String b = convertPackageToPath(a);
System.out.println(b);
}
}
==================
以上代码在 linux下运行 打好的 jar ,出问题,原因是没有对 目录entry文件进行处理
以下代码 测试通过:
/**jar -cvf
* @param desJar
* @param jarDir
* @throws Exception
*/
public static void jar(File desJar,File jarDir) throws Exception{
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(desJar));
File[] src = jarDir.listFiles();
jar(out,src);
}
/**
* @param out
* @param src
*/
public static void jar(OutputStream out,File[] src)throws Exception{
jar(out,src,null,null);
}
/**
* @param out
* @param src
*/
public static void jar(OutputStream out,File src)throws Exception{
jar(out,new File[]{src},null,null);
}
/**
* @param out
* @param src
* @param prefix
* @param man
* @throws Exception
*/
public static void jar(OutputStream out,File[] src,String prefix,Manifest man) throws Exception{
JarOutputStream jout = null ;
if (man == null){
jout = new JarOutputStream(out);
}else{
jout = new JarOutputStream(out,man);
}
if(prefix != null && prefix.trim().length() >0 && !prefix.equals("/")){
if(prefix.charAt(0) == '/'){
prefix = prefix.substring(1);
}
if(prefix.charAt(prefix.length() -1) !='/'){
prefix = prefix + "/";
}
}else{
prefix = "";
}
for(File f : src){
jar(f,prefix,jout);
}
jout.close();
}
/**
* @param src
* @param prefix
* @param jout
*/
private static void jar(File src,String prefix,JarOutputStream jout) throws Exception{
if(src.isDirectory()){
prefix = prefix + src.getName() + "/";
ZipEntry entry = new ZipEntry(prefix);
entry.setTime(src.lastModified());
entry.setMethod(JarOutputStream.STORED);
entry.setSize(0l);
entry.setCrc(0l);
jout.putNextEntry(entry);
jout.closeEntry();
File[] files = src.listFiles();
if(files != null){
for(File file : files){
jar(file,prefix,jout);
}
}
}else{
byte[] buffer = new byte[8092];
ZipEntry entry = new ZipEntry(prefix + src.getName());
entry.setTime(src.lastModified());
jout.putNextEntry(entry);
FileInputStream in = new FileInputStream(src);
int len;
while((len = in.read(buffer,0,buffer.length)) != -1){
jout.write(buffer,0,len);
}
in.close();
jout.closeEntry();
}
}
/**jar -xvf
* @param jarFile
* @param unJarDir
*/
public static void unJar(File jarFile,File unJarDir) throws Exception{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(jarFile));
unJar(in,unJarDir);
}
/**
* @param in
* @param unJarDir
*/
public static void unJar(InputStream in,File unJarDir) throws Exception{
if(!unJarDir.exists()){
unJarDir.mkdirs();
}
JarInputStream jin = new JarInputStream(in);
byte[] buffer = new byte[8092];
ZipEntry entry = jin.getNextEntry();
while(entry != null){
String fileName = entry.getName();
if(File.separatorChar != '/'){
fileName = fileName.replace('/', File.separatorChar);
}
if(fileName.charAt(fileName.length() -1 ) == '/'){
fileName = fileName.substring(0,fileName.length() -1);
}
if(fileName.charAt(0)== '/'){
fileName = fileName.substring(1);
}
File file = new File(unJarDir,fileName);
if(entry.isDirectory()){
file.mkdirs();
}else{
File parent = file.getParentFile();
if(!parent.exists()){
parent.mkdirs();
}
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
int len = 0;
while((len = jin.read(buffer,0,buffer.length)) != -1){
out.write(buffer,0,len);
}
out.flush();
out.close();
file.setLastModified(entry.getTime());
}
jin.closeEntry();
entry = jin.getNextEntry();
}
Manifest mf = jin.getManifest();
if(mf != null){
File file = new File(unJarDir,"META-INF/MANIFEST.MF");
File parent = file.getParentFile();
if(!parent.exists()){
parent.mkdirs();
}
OutputStream out = new FileOutputStream(file);
mf.write(out);
out.flush();
out.close();
}
jin.close();
}
public static void main(String[] args) throws Exception {
File jarF = new File("c:/test/a.jar");
File bjar = new File("c:/test/b.jar");
File unJarDir = new File("c:/test/aa");
unJar(jarF, unJarDir);
jar(bjar,unJarDir);
}
发表评论
-
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 382基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 442在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1144有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 484多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 692url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7791. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 747solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4420javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 940今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1221JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 602最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 789基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 722有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 920最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 1003一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3451今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3462j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1354尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1952cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1066Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
java解压zlib和压缩zlib的jar
以下是一个基本的Java代码示例,演示如何解压缩ZIP文件: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void unzip(String zipFilePath, String destDirectory...
本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...
本文将深入探讨如何使用Java实现RAR压缩和解压,以及如何利用提供的jar包(java-unrar-0.3.jar和ant.jar)进行操作,并结合`DeCompressUtil.java`提供的示例代码来理解其实现。 首先,`java-unrar-0.3.jar`是一个...
Apache的java压缩(解压)文件jar包; jar包的名字有些别扭叫ant.jar
Java 语言提供了多种解压缩 RAR 文件的方法,其中之一是使用 unrar.jar 库。 unrar.jar 库是一个 Java 库,它可以用于解压缩 RAR 文件。使用这个库可以避免使用命令行调用 WinRAR.exe,这可以避免出现解压缩页面和...
这个库为Java提供了与7-Zip交互的API,使我们能够在Java代码中调用7-Zip的解压缩功能。 首先,我们需要导入必要的jar包。"sevenzipjbinding-all-platforms-9.20-2.00beta.jar"是sevenzipjbinding库的核心组件,它...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
在Java编程中,处理压缩文件,如ZIP格式,是一项常见的任务。然而,当ZIP文件包含中文文件名时,可能会遇到解压失败的问题。...通过遵循这些最佳实践,你可以在Java环境中成功地解压和处理包含非ASCII字符的压缩文件。
在Java编程领域,有三个关键知识点紧密关联:Java JAR包、ZIP压缩解压和XML解析,以及数据库连接驱动。让我们逐一深入探讨这些主题。 首先,Java JAR(Java Archive)包是Java平台的一种归档格式,用于集合多个类...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java(一个包含压缩和解压缩功能的类)和CompressBook.java(可能是一个使用该功能的主程序)。以下是对这些知识点的详细解释: 1. **...
在Java编程环境中,压缩和解压文件是常见的需求,尤其是对于大数据处理和文件传输。`zip`格式是一种广泛使用的文件压缩格式,具有高效且兼容性强的特点。本篇将详细讲解如何利用Java工具类进行`zip`压缩和解压操作,...
### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....
在实际应用中,开发者可以使用`javatar-2.5.jar`库和`TarUtil.java`类,通过编写Java代码实现对tar文件的解压和压缩操作。例如,他们可以创建一个简单的命令行工具,接收用户提供的文件路径,然后调用这些方法来执行...
java解压zip或rar压缩文件 包括源码和所需要的jar包:apache ant.jar 和 java-unrar-0.3.jar zip文件解压(要使用apache ant.jar以处理中文乱码) rar文件解压(要使用java-unrar-0.3.jar) 具有处理中文乱码功能 代码...
总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...
本篇文章将深入探讨如何在Java中解压jar包,以及与之相关的`java unrar 0.3`库的使用。 首先,我们要了解什么是jar包。JAR(Java Archive)文件是Java平台的标准打包格式,它将多个类文件、资源文件和其他元数据...