- 浏览: 37875 次
- 性别:
- 来自: 台州
最新评论
使用apache ant.tools.zip来打包和解压缩。
package zip;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.compress.utils.IOUtils; import org.apache.tools.ant.util.FileUtils; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; /** * * @author Administrator cph * */ public class ZipUtils { ZipFile zipFile = null; ZipEntry zipEntry = null; File temp = null; private OutputStream out = null; private BufferedOutputStream bos = null; private ZipOutputStream zos = null; /** * * @param zipName 需要解压的文件 * @param zipPath 解压存储路径 * @throws Exception */ public void unZip(String zipName,String zipPath) throws Exception{ FileOutputStream fos; InputStream is; String path1 = ""; String tempPath = ""; if(!new File(zipPath).exists()){ new File(zipPath).mkdir(); } zipFile = new ZipFile(zipName); temp = new File(zipPath); String strPath = temp.getAbsolutePath(); Enumeration<Object> enu = zipFile.getEntries(); while(enu.hasMoreElements()){ zipEntry = (ZipEntry) enu.nextElement(); path1 = zipEntry.getName(); if(zipEntry.isDirectory()){ tempPath = strPath+File.separator+path1; File dir = new File(tempPath); dir.mkdirs(); continue; } else{ is = zipFile.getInputStream(zipEntry); BufferedInputStream bis = new BufferedInputStream(is); path1 = zipEntry.getName(); tempPath = strPath+File.separator+path1; String subdirtemp = path1; for(int i=0;i<subdirtemp.length();i++){ if(subdirtemp.substring(i, i+1).equalsIgnoreCase("\\")){ String tempstr = strPath+File.separator+subdirtemp.substring(0,i); File subdir = new File(tempstr); if(!subdir.exists()){ subdir.mkdir(); } } } fos = new FileOutputStream(tempPath); BufferedOutputStream bos = new BufferedOutputStream(fos); // int c ; // while((c = bis.read())!=-1){ // bos.write(c); // } IOUtils.copy(bis, bos); bis.close(); bos.close(); } } } public void close() throws IOException{ this.zos.flush(); this.zos.close(); this.bos.flush(); this.bos.close(); this.out.flush(); this.out.close(); } /** * * @param zipfileName 打包后文件的名称,含路径 * @param filePath 需要打包的文件夹或者文件的路径 * @param pathName 打包到pathName文件夹下 * @throws Exception */ public void doZip(String zipfileName,String filePath,String pathName) throws Exception{ File f = new File(zipfileName); this.out = new FileOutputStream(f); this.bos = new BufferedOutputStream(out); this.zos = new ZipOutputStream(bos); this.zos.setEncoding("GBK"); File file = new File(filePath); if (!"".equals(pathName) && null != pathName) { pathName = pathName + File.separator; } else { pathName = f.getName().substring(0, f.getName().length() - 4) + File.separator; } doZip(zos,filePath,pathName); close(); } private void doZip(ZipOutputStream zos, String file, String pathName) throws IOException { File file2zip = new File(file); if (file2zip.isFile()) { zos.putNextEntry(new ZipEntry(pathName + file2zip.getName())); IOUtils.copy(new FileInputStream(file2zip.getAbsolutePath()), zos); zos.closeEntry(); } else { File[] files = file2zip.listFiles(); if (files.length < 1 || files == null) { return; } else { for (File f : files) { if (f.isDirectory()) { doZip(zos, f.getAbsolutePath(), pathName+f.getName()+File.separator); } else { zos.putNextEntry(new ZipEntry(pathName + f.getName())); IOUtils.copy(new FileInputStream(f.getAbsolutePath()), zos); zos.closeEntry(); } } } } } public static void main(String[] args) throws Exception { ZipUtils tzp = new ZipUtils(); // tzp.doZip("c:/aaab.zip", "d:/a/111.ppt", ""); tzp.unZip("c:\\aaab.zip", "d:\\abc\\"); } }
- apache-ant-1.8.3-bin.zip (7.7 MB)
- 下载次数: 40
发表评论
-
httpclient重定向和post
2012-07-10 15:55 2239有些登陆需要涉及到重定向登录虾米音乐网的例子httpcli ... -
poi:无法获取公式值
2012-06-01 09:16 2158有时候用cell.getNumericCellValue()无 ... -
通过set移除list相同项
2012-03-21 11:51 1100今天按照boss的要求做的时候,遇到了一个问题。boss一条记 ... -
compress 解压缩
2012-03-13 17:02 2075主要用到了apach commons里 ... -
改变ie查看源代码的打开方式
2012-02-22 09:47 1378更改IE的“查看源代码”打开的编辑器--notepa ... -
又简单又好用的同步控制
2012-02-21 10:45 747上代码 package com.enfang; /** ... -
struts2接收前台参数的3个方法
2012-02-10 09:18 383101.public class GetRequestParam ... -
DBCP的使用
2012-01-31 10:40 993反正是工具类,直接上代码吧。复制一下就可以用了 pac ... -
邮件抓取器的实现
2012-01-19 14:16 861朋友要一个邮件抓取器 ... -
java map的遍历
2012-01-19 11:36 730有时候需要对map进行排序,什么会进行对map的遍历,以下是对 ... -
JOptionPane JOptionPane
2012-01-16 14:35 894package T1; import jav ... -
httpClient的使用
2012-01-13 13:42 853httpClient的简单使用方法(代理方式的)。 p ... -
FileUpload
2012-01-11 15:49 750以下为apache fileupload的使用。 先一个se ... -
poi :合并excel的单元格
2011-12-19 15:32 1131// 合并单元格 从左上角合并到右下角 ... -
HtmlPaser与StringEscapeUtils共舞抓取网页
2011-12-13 14:48 1472用正则来匹配的确很强大,但如果是网页的话HtmlPaser更方 ... -
jacob:no jacob-1.15-M4-x86 in java.library.path
2011-12-13 13:37 2606今天遇到一个很蛋疼的问题,生成ppt的时候老抱no jacob ...
相关推荐
Java自带的解压缩不支持中文路径,此开发包支持中文的解压缩
本文主要介绍了使用apache ant进行zip解压缩操作的方法,可以解决中文编码和首层父类无法创建问题,需要的朋友可以参考下
使用java压缩也解压zip文件方法,解决中文乱码问题。使用java自带的压缩解压算法,会出现中文乱码问题。使用apache io的zip包,有效解决该问题。Ant的压缩解压,也是使用该类。
java本身自带有zip格式的压缩解压api,但是对于含有中文的压缩文件无能为力,好在还有apache的ant可以解决zip文件的中文乱码问题。mucommander是一个可以支持zip、gzip、rar、tar、iso等格式的全能工具,这个包是...
详解java解压缩zip和rar的工具类使用教程直接上代码 package decompress; import java.io.File; import java.io.FileOutputStream; import org.apache.tools.ant.Project; import org.apache.tools.ant...
ant的安装就是将下载的压缩包解压缩到相应的目录下即可,这里笔者将它解压缩到D盘。解压缩后如下图所示: 由上图可见,此目录名太长,因此读者可根据自身爱好,将之改成一个简单的目录名。接下来就是需要配置...
使用java压解有中文字符的文件乱码,apache项目中的ant.jar包可完美解决此问题,代码是用eclipse项目,项目下有ant.jar包,使用前请把ant.jar包导入.
步骤1下载并解压缩.zip下载文件。 步骤2为您的平台运行适当的脚本,例如,对于像Unix这样的系统的.sh脚本和对于Windows的.bat脚本。 使用Netbeans和ant构建 GroovyLab zip下载包含源代码和所有相关的库,以使用ant...
步骤1下载.zip下载文件并解压缩。 步骤2为您的平台运行适当的脚本,例如,对于像Unix这样的系统的.sh脚本和对于Windows的.bat脚本。 使用Netbeans和ant构建 JShellLab.zip下载包含使用ant构建JShellLab的源代码和...
拉托 ... 安装 Linux 克隆LaToe项目: ... cd latoe 用Ant构建LaToe: ... 解压缩C:\ ant \ 打开“ cmd”(搜索> cmd) 更新路径: set PATH=%PATH% ; C: \a nt \b in ; 测试蚂蚁: ant -version Apache
1 新建一个web工程名字为FCKeditor-java-2.3,然后把FCKeditor-2.3-java.zip解压缩后的代码拷贝到工程目录下 2如果是用的Eclipse,使用快捷键Ctrl+Shift+R 在SimpleUploaderServlet.java和ConnectorServlet.java两...
o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your ...