- 浏览: 492751 次
- 性别:
- 来自: xiamen
文章分类
最新评论
-
陈乐鹏:
你这个下载要怎么玩?我这里老提示未安装!
[转]使用ScriptX控件进行Web打印总结 -
zqb666kkk:
博主有示例代码吗
cxf ws-security 加密和签名的实现 -
mclin0704:
你好,请问WSDL2Java 可以用java实现吗?
Java2WSDL之java实现 -
hubiao0629:
楼主,这个文件会有不兼容的问题把。
mysql5忘记密码后的处理方法 -
zhaoyubetter:
OK,可以试试!多谢楼主
后台管理界面收集
以下本文来自:
http://blog.csdn.net/lr5200/article/details/6606518
其他参考:
http://lj6684.iteye.com/blog/901378
http://hi.baidu.com/xghrbc1001/blog/item/884b5afafe0371909f514657.html
利用Apache ant.jar中的zip包进行Zip压缩和解压
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.Enumeration; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; /** * 利用Apache ant.jar中的zip包进行Zip压缩和解压 */ public class XZouZip { /** * 测试压缩 */ public void testZip(){ File srcFile = new File("c:/upload");//要压缩的文件对象 File targetZipFile = new File("c:/upload.zip");//压缩后的文件名 ZipOutputStream out = null; boolean boo = false;//是否压缩成功 try{ CheckedOutputStream cos = new CheckedOutputStream(new FileOutputStream( targetZipFile), new CRC32()); out = new ZipOutputStream(cos); //out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("c:/uploadd.zip"))); zip(srcFile, out, "", true); boo = true; }catch(IOException ex){ throw new RuntimeException(ex); }finally{ try{ if(out!=null) out.close(); }catch(IOException ex){ throw new RuntimeException("关闭Zip输出流出现异常",ex); }finally{ //清理操作 if(!boo && targetZipFile.exists())//压缩不成功, targetZipFile.delete(); } } } /** * 测试解压缩 */ public void testUnZip(){ File srcZipFile = new File("c:/upload.zip");//要解压缩的zip文件对象 String destDir = "c:/a";//将解压文件对象放置a目录中 boolean boo = false;//是否压缩成功 try { unZip(srcZipFile,destDir); boo = true; } catch (IOException e) { throw new RuntimeException(e); }finally{ //清理操作 if(!boo) deleteDirectory(new File(destDir));//目标文件夹 。清理 } } public static void main(String[] args) throws IOException { XZouZip tool = new XZouZip(); tool.testZip(); //tool.testUnZip(); } /** * 压缩zip文件 * @param file 压缩的文件对象 * @param out 输出ZIP流 * @param dir 相对父目录名称 * @param boo 是否把空目录压缩进去 */ public void zip(File file,ZipOutputStream out,String dir,boolean boo) throws IOException{ if(file.isDirectory()){//是目录 File []listFile = file.listFiles();//得出目录下所有的文件对象 if(listFile.length == 0 && boo){//空目录压缩 out.putNextEntry(new ZipEntry(dir + file.getName() + "/"));//将实体放入输出ZIP流中 System.out.println("压缩." + dir + file.getName() + "/"); return; }else{ for(File cfile: listFile){ zip(cfile,out,dir + file.getName() + "/",boo);//递归压缩 } } }else if(file.isFile()){//是文件 System.out.println("压缩." + dir + file.getName() + "/"); byte[] bt = new byte[2048*2]; ZipEntry ze = new ZipEntry(dir+file.getName());//构建压缩实体 //设置压缩前的文件大小 ze.setSize(file.length()); out.putNextEntry(ze);////将实体放入输出ZIP流中 FileInputStream fis = null; try{ fis = new FileInputStream(file); int i=0; while((i = fis.read(bt)) != -1) {//循环读出并写入输出Zip流中 out.write(bt, 0, i); } }catch(IOException ex){ throw new IOException("写入压缩文件出现异常",ex); }finally{ try{ if (fis != null) fis.close();//关闭输入流 }catch(IOException ex){ throw new IOException("关闭输入流出现异常"); } } } } /** * 解压缩zipFile * @param file 要解压的zip文件对象 * @param outputDir 要解压到某个指定的目录下 * @throws IOException */ public void unZip(File file,String outputDir) throws IOException { ZipFile zipFile = null; try { zipFile = new ZipFile(file); createDirectory(outputDir,null);//创建输出目录 Enumeration<?> enums = zipFile.getEntries(); while(enums.hasMoreElements()){ ZipEntry entry = (ZipEntry) enums.nextElement(); System.out.println("解压." + entry.getName()); if(entry.isDirectory()){//是目录 createDirectory(outputDir,entry.getName());//创建空目录 }else{//是文件 File tmpFile = new File(outputDir + "/" + entry.getName()); createDirectory(tmpFile.getParent() + "/",null);//创建输出目录 InputStream in = null; OutputStream out = null; try{ in = zipFile.getInputStream(entry);; out = new FileOutputStream(tmpFile); int length = 0; byte[] b = new byte[2048]; while((length = in.read(b)) != -1){ out.write(b, 0, length); } }catch(IOException ex){ throw ex; }finally{ if(in!=null) in.close(); if(out!=null) out.close(); } } } } catch (IOException e) { throw new IOException("解压缩文件出现异常",e); } finally{ try{ if(zipFile != null){ zipFile.close(); } }catch(IOException ex){ throw new IOException("关闭zipFile出现异常",ex); } } } /** * 构建目录 * @param outputDir * @param subDir */ public void createDirectory(String outputDir,String subDir){ File file = new File(outputDir); if(!(subDir == null || subDir.trim().equals(""))){//子目录不为空 file = new File(outputDir + "/" + subDir); } if(!file.exists()){ file.mkdirs(); } } /** * 清理文件(目录或文件) * @param file */ public void deleteDirectory(File file){ if(file.isFile()){ file.delete();//清理文件 }else{ File list[] = file.listFiles(); if(list!=null){ for(File f: list){ deleteDirectory(f); } file.delete();//清理目录 } } } }
Ant 压缩与解压缩 (本人在使用的)
import java.io.File; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Expand; import org.apache.tools.ant.taskdefs.Zip; import org.apache.tools.ant.types.FileSet; /** * 利用Apache ant.jar中的ant包进行Zip压缩和解压 * 这个更为简单 */ public class XZouZipByAnt { public static void main(String[] args) { XZouZipByAnt jzb = new XZouZipByAnt(); jzb.zip("c:/upload", "c:/upload.zip"); //jzb.unZip("c:/a", "c:/upload.zip"); } /** * 解压缩 * @param destDir 生成的目标目录下 c:/a * @param sourceZip 源zip文件 c:/upload.zip * 结果则是 将upload.zip文件解压缩到c:/a目录下 */ public void unZip(String destDir,String sourceZip){ try { Project prj1 = new Project(); Expand expand = new Expand(); expand.setProject(prj1); expand.setSrc(new File(sourceZip)); expand.setOverwrite(false);//是否覆盖 File f = new File(destDir); expand.setDest(f); expand.execute(); } catch (Exception e) { e.printStackTrace(); } } /** * 压缩 * * @param sourceFile * 压缩的源文件 如: c:/upload * @param targetZip * 生成的目标文件 如:c:/upload.zip */ public void zip(String sourceFile,String targetZip){ Project prj = new Project(); Zip zip = new Zip(); zip.setProject(prj); zip.setDestFile(new File(targetZip));//设置生成的目标zip文件File对象 FileSet fileSet = new FileSet(); fileSet.setProject(prj); fileSet.setDir(new File(sourceFile));//设置将要进行压缩的源文件File对象 //fileSet.setIncludes("**/*.java"); //包括哪些文件或文件夹,只压缩目录中的所有java文件 //fileSet.setExcludes("**/*.java"); //排除哪些文件或文件夹,压缩所有的文件,排除java文件 zip.addFileset(fileSet); zip.execute(); } }
通过 Apache Tool 进行JAVA tar || tar.gz
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.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import org.apache.tools.tar.TarEntry; import org.apache.tools.tar.TarInputStream; import org.apache.tools.tar.TarOutputStream; /** * 通过 Apache Tool 进行JAVA tar || tar.gz */ public class XZouTarAndGz { /** * 测试归档tar文件 */ public File testTar(){ File srcFile = new File("c:/upload");//要归档的文件对象 File targetTarFile = new File("c:/upload.tar");//归档后的文件名 TarOutputStream out = null; boolean boo = false;//是否压缩成功 try{ out = new TarOutputStream(new BufferedOutputStream(new FileOutputStream(targetTarFile))); tar(srcFile, out, "", true); boo = true; //归档成功 return targetTarFile; }catch(IOException ex){ throw new RuntimeException(ex); }finally{ try{ if(out!=null) out.close(); }catch(IOException ex){ throw new RuntimeException("关闭Tar输出流出现异常",ex); }finally{ //清理操作 if(!boo && targetTarFile.exists())//归档不成功, targetTarFile.delete(); } } } /** * 测试压缩归档tar.gz文件 */ public void testTarGz(){ File tarFile = testTar();//生成的tar文件 File gzFile = new File(tarFile + ".gz");//将要生成的压缩文件 GZIPOutputStream out = null; InputStream in = null; boolean boo = false;//是否成功 try{ in = new FileInputStream(tarFile); out = new GZIPOutputStream(new FileOutputStream(gzFile),1024 * 2); byte b[] = new byte[1024 * 2]; int length = 0; while( (length = in.read(b)) != -1 ){ out.write(b,0,length); } boo = true; }catch(Exception ex){ throw new RuntimeException("压缩归档文件失败",ex); }finally{ try{ if(out!=null) out.close(); if(in!=null) in.close(); }catch(IOException ex){ throw new RuntimeException("关闭流出现异常",ex); }finally{ if(!boo){//清理操作 tarFile.delete(); if(gzFile.exists()) gzFile.delete(); } } } } /** * 测试解压归档tar文件 */ public void testUnTar(){ File srcTarFile = new File("c:/upload.tar");//要解压缩的tar文件对象 String destDir = "c:/XZou";//把解压的文件放置到c盘下的XZou目录下面 boolean boo = false;//是否压缩成功 try { unTar(srcTarFile,destDir); boo = true; } catch (IOException e) { throw new RuntimeException(e); }finally{ //清理操作 if(!boo) deleteDirectory(new File(destDir));//目标文件夹 。清理 } } /** * 测试解压归档tar文件 */ public void testUnTarGz(){ File srcTarGzFile = new File("c:/up.tar.gz");//要解压缩的tar.gz文件对象 String destDir = "c:/XZou";//把解压的文件放置到c盘下的XZou目录下面 boolean boo = false;//是否压缩成功 try { unTarGz(srcTarGzFile,destDir); boo = true; } catch (IOException e) { throw new RuntimeException(e); }finally{ //清理操作 if(!boo) deleteDirectory(new File(destDir));//目标文件夹 。清理 } } public static void main(String[] args) throws Exception { XZouTarAndGz jtar = new XZouTarAndGz(); //jtar.testTar(); //jtar.testTarGz(); //jtar.testUnTar(); jtar.testUnTarGz(); } /** * 归档tar文件 * @param file 归档的文件对象 * @param out 输出tar流 * @param dir 相对父目录名称 * @param boo 是否把空目录归档进去 */ public static void tar(File file,TarOutputStream out,String dir,boolean boo) throws IOException{ if(file.isDirectory()){//是目录 File []listFile = file.listFiles();//得出目录下所有的文件对象 if(listFile.length == 0 && boo){//空目录归档 out.putNextEntry(new TarEntry(dir + file.getName() + "/"));//将实体放入输出Tar流中 System.out.println("归档." + dir + file.getName() + "/"); return; }else{ for(File cfile: listFile){ tar(cfile,out,dir + file.getName() + "/",boo);//递归归档 } } }else if(file.isFile()){//是文件 System.out.println("归档." + dir + file.getName() + "/"); byte[] bt = new byte[2048*2]; TarEntry ze = new TarEntry(dir+file.getName());//构建tar实体 //设置压缩前的文件大小 ze.setSize(file.length()); //ze.setName(file.getName());//设置实体名称.使用默认名称 out.putNextEntry(ze);////将实体放入输出Tar流中 FileInputStream fis = null; try{ fis = new FileInputStream(file); int i=0; while((i = fis.read(bt)) != -1) {//循环读出并写入输出Tar流中 out.write(bt, 0, i); } }catch(IOException ex){ throw new IOException("写入归档文件出现异常",ex); }finally{ try{ if (fis != null) fis.close();//关闭输入流 out.closeEntry(); }catch(IOException ex){ throw new IOException("关闭输入流出现异常"); } } } } /** * 解压tar File * @param file 要解压的tar文件对象 * @param outputDir 要解压到某个指定的目录下 * @throws IOException */ public void unTar(File file,String outputDir) throws IOException { TarInputStream tarIn = null; try{ tarIn = new TarInputStream(new FileInputStream(file),1024 * 2); createDirectory(outputDir,null);//创建输出目录 TarEntry entry = null; while( (entry = tarIn.getNextEntry()) != null ){ if(entry.isDirectory()){//是目录 createDirectory(outputDir,entry.getName());//创建空目录 }else{//是文件 File tmpFile = new File(outputDir + "/" + entry.getName()); createDirectory(tmpFile.getParent() + "/",null);//创建输出目录 OutputStream out = null; try{ out = new FileOutputStream(tmpFile); int length = 0; byte[] b = new byte[2048]; while((length = tarIn.read(b)) != -1){ out.write(b, 0, length); } }catch(IOException ex){ throw ex; }finally{ if(out!=null) out.close(); } } } }catch(IOException ex){ throw new IOException("解压归档文件出现异常",ex); } finally{ try{ if(tarIn != null){ tarIn.close(); } }catch(IOException ex){ throw new IOException("关闭tarFile出现异常",ex); } } } /** * 解压tar.gz 文件 * @param file 要解压的tar.gz文件对象 * @param outputDir 要解压到某个指定的目录下 * @throws IOException */ public void unTarGz(File file,String outputDir) throws IOException{ TarInputStream tarIn = null; try{ tarIn = new TarInputStream(new GZIPInputStream( new BufferedInputStream(new FileInputStream(file))), 1024 * 2); createDirectory(outputDir,null);//创建输出目录 TarEntry entry = null; while( (entry = tarIn.getNextEntry()) != null ){ if(entry.isDirectory()){//是目录 createDirectory(outputDir,entry.getName());//创建空目录 }else{//是文件 File tmpFile = new File(outputDir + "/" + entry.getName()); createDirectory(tmpFile.getParent() + "/",null);//创建输出目录 OutputStream out = null; try{ out = new FileOutputStream(tmpFile); int length = 0; byte[] b = new byte[2048]; while((length = tarIn.read(b)) != -1){ out.write(b, 0, length); } }catch(IOException ex){ throw ex; }finally{ if(out!=null) out.close(); } } } }catch(IOException ex){ throw new IOException("解压归档文件出现异常",ex); } finally{ try{ if(tarIn != null){ tarIn.close(); } }catch(IOException ex){ throw new IOException("关闭tarFile出现异常",ex); } } } /** * 构建目录 * @param outputDir * @param subDir */ public void createDirectory(String outputDir,String subDir){ File file = new File(outputDir); if(!(subDir == null || subDir.trim().equals(""))){//子目录不为空 file = new File(outputDir + "/" + subDir); } if(!file.exists()){ file.mkdirs(); } } /** * 清理文件(目录或文件) * @param file */ public void deleteDirectory(File file){ if(file.isFile()){ file.delete();//清理文件 }else{ File list[] = file.listFiles(); if(list!=null){ for(File f: list){ deleteDirectory(f); } file.delete();//清理目录 } } } }
Java操作压缩文件技术整理
1. RAR解压
RAR属于目前Windows平台应用最广泛的压缩文件格式,但由于RAR格式为商业压缩算法,非免费,所以Java方面没有特别合适的开源制作/ 解析RAR文件的库。网上解决办法很多,最多的还是介绍由Java调用命令行工具执行winRAR命令进行压缩文件解析操作(虽然可行,但总感觉有那么点 别扭)
之前在网上有一款开源的项目叫 JUnrar,但目前项目Project地址已经无效了(不知道是不是触犯了商业条款被迫封了),在被人的空间中搜到了一个当时的发布版本,调用时需要配 合其内部提供的dll使用,不是100% Java实现,但也比调用命令行方式用起来正规。经初步测试查看RAR压缩文件内文件列表及压缩文件解压功能正常(压缩包内有示例程序,一看就懂)
附件中Junrar.rar 下载
- junrar.rar (3.2 MB)
- 下载次数: 15
- ant.jar (1.8 MB)
- 下载次数: 16
发表评论
-
Mac 安装maven
2017-03-08 23:05 465Mac OS X 安装Maven: 下载 Maven ... -
MAC 安装eclipse svn 插件
2017-03-08 22:48 649参考此链接: http://www.cnblogs.com ... -
tomcat 单机多实例
2015-07-08 09:06 839tomcat 部署单机多实例,实现每个实例都是跟 ... -
java 分块上传
2014-05-30 14:56 1435java 分块下载 java多线程分块上传并 ... -
bat class to java Jad反编译
2013-12-04 14:58 1187反编译所使用的工具是jad.exe 有时候需要批量 ... -
ant svn 自动更新和发布
2012-05-23 16:42 2341团队管理中,当项目非常多,而且发布频繁,手动发布往往非常繁琐, ... -
DatabaseMetaData getExportedKey() 无法获取信息
2012-03-14 17:26 1183在jdbc DatabaseMetaData.getExpo ... -
Column 'IS_AUTOINCREMENT' not found
2012-03-14 10:41 2464java.sql.SQLException: Column ' ... -
java 递归加减法
2012-01-12 17:30 1605有时候设计到list map 做交集,并集等操作。 可以参考 ... -
java 发送mail
2011-12-06 09:19 1519java 发送mail,很久之前整过,没做记录,这次整理下做个 ... -
Java源码中的发现:快速判断一个int值是几位数
2011-07-22 15:57 4019判断一个int值是几位数,要是我自己实现,估计又会想到除法和模 ... -
Weblogic 部署SSL
2011-07-15 16:14 927weblogic 部署SSL 整理网路上的 一部分由 ... -
CXF客户端配置请求超时限制
2011-07-13 17:14 5122在用cxf 开发webservice应用时,客户端老报 ... -
Weblogic的基础优化!
2011-07-04 16:43 1272由于项目需要,最近研究了一下系统优化。 系统性能优化是系 ... -
判断偶数几种方法性能
2011-06-24 17:06 1348判断一个数是否偶数,在编程中经常用的,大部分人都用的是 ... -
java读取文件夹下的所有文件夹和文件
2011-05-18 10:07 1413import java.io.FileNotFoundExce ... -
ThreadLocal的使用场景
2011-04-11 17:24 1096在Java的多线程编程中,为保证多个线程对共享变量的安全访问, ... -
Java 进制之间互相转换
2011-03-30 13:34 1274public static void main(String[ ... -
B/S架构下applet,JNI实现对客户端硬件的读取
2011-03-26 10:20 1520昨天整个Applet 调用JNI 实现读取指纹的Demo,郁闷 ... -
Jocky--Java混淆编译器
2010-10-13 15:58 1950一、前言 1.1 什么是Jocky? 我们知道,Ja ...
相关推荐
在这个例子中,`compress`任务会将当前目录下的`source.txt`文件压缩到`compressed.zip`,而`decompress`任务则会将`compressed.zip`解压缩到`uncompressed`目录。 总结来说,Java的`java.util.zip`库提供了基本的...
总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...
在Java编程环境中,处理文件的压缩与解压缩是一项常见的任务,尤其在数据传输、存档或备份场景下。本主题将深入探讨如何使用Java来创建一个文件解压缩工具箱,特别关注支持ZIP和RAR格式,并解决中文乱码问题。首先,...
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
Ant的`<zip>`任务不仅限于压缩,还可以解压缩ZIP文件,或者在现有ZIP文件中添加、删除或更新条目。 至于“ant-1.9.7压缩资源包”,这通常会包含Ant的1.9.7版本的所有必需文件,包括JAR包和其他必要的文档、库和示例...
标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache Ant的核心库,它是一个基于Java的任务执行工具,广泛用于构建项目,其中包含了...
Java 提供了丰富的库和工具来处理文件的压缩与解压缩工作。在这个场景中,我们提到的"java 自动解压缩"可能涉及到一个Java程序,它能够自动化地对ZIP或GZIP格式的压缩文件进行解压。此外,提到了`ant.jar`,这是...
以下是使用Java标准库和Ant分别进行ZIP压缩和解压缩的基本示例: 1. 使用`java.util.zip`进行压缩: ```java import java.io.*; import java.util.zip.*; public class ZipExample { public static void main...
虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...
java 解压缩目录下的所有文件 需要用的ant.jar 可以解决中文乱码问题
3. 解压缩Ant的安装包到一个方便的位置,例如D:\ant-1.6。 4. 设置ANT_HOME环境变量,并将ANT_HOME/bin添加到PATH环境变量中。 5. 验证Ant安装是否成功,通过命令行运行ant命令,如果显示"Buildfile: build.xml does...
3. **解压缩文件**:与压缩相反,`unzipFiles()`方法可能利用`ZipInputStream`来读取ZIP文件并解压到指定目录。通过循环遍历输入流中的每个`ZipEntry`,创建对应的目标文件,然后将其内容复制出来。 4. **路径和...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
根据提供的文件信息,我们可以归纳出几个关键的知识点,这些知识点主要围绕着Java中的压缩与解压缩操作。下面将对这些知识点进行详细的阐述。 ### 1. Java中的ZIP压缩 #### 压缩基本原理 在Java中,可以利用`java....
8. **与其他工具集成**:`ant.jar` 提供了与Ant构建系统集成的可能性。在某些情况下,`ZipTools.java`可能被设计成一个Ant任务,允许在Ant构建脚本中直接调用。 综上所述,`Java打包工具类(包含ant.jar和java类)`...