/**
* 压缩文件-由于out要在递归调用外,所以封装一个方法用来
* 调用ZipFiles(ZipOutputStream out,String path,File... srcFiles)
* @param zip
* @param path
* @param srcFiles
* @throws IOException
* @author isea533
*/
public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
ZipTest.ZipFiles(out,path,srcFiles);
out.close();
System.out.println("*****************压缩完毕*******************");
}
/**
* 压缩文件-File
* @param zipFile zip文件
* @param srcFiles 被压缩源文件
* @author isea533
*/
public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){
path = path.replaceAll("\\*", "/");
if(!path.endsWith("/")){
path+="/";
}
byte[] buf = new byte[1024];
try {
for(int i=0;i<srcFiles.length;i++){
if(srcFiles[i].isDirectory()){
File[] files = srcFiles[i].listFiles();
String srcPath = srcFiles[i].getName();
srcPath = srcPath.replaceAll("\\*", "/");
if(!srcPath.endsWith("/")){
srcPath+="/";
}
out.putNextEntry(new ZipEntry(path+srcPath));
ZipFiles(out,path+srcPath,files);
}
else{
FileInputStream in = new FileInputStream(srcFiles[i]);
System.out.println(path + srcFiles[i].getName());
out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解压到指定目录
* @param zipPath
* @param descDir
* @author isea533
*/
public static void unZipFiles(String zipPath,String descDir)throws IOException{
unZipFiles(new File(zipPath), descDir);
}
/**
* 解压文件到指定目录
* @param zipFile
* @param descDir
* @author isea533
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(File zipFile,String descDir)throws IOException{
File pathFile = new File(descDir);
if(!pathFile.exists()){
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile);
for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
ZipEntry entry = (ZipEntry)entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;
//判断路径是否存在,不存在则创建文件路径
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if(!file.exists()){
file.mkdirs();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if(new File(outPath).isDirectory()){
continue;
}
//输出文件路径信息
System.out.println(outPath);
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
System.out.println("******************解压完毕********************");
}
/**
* 解压到指定目录
* @param zipPath
* @param descDir
* @author isea533
*/
public static void unZipFiles(String zipPath,String descDir)throws IOException{
unZipFiles(new File(zipPath), descDir);
}
/**
* 解压文件到指定目录
* @param zipFile
* @param descDir
* @author isea533
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(File zipFile,String descDir)throws IOException{
File pathFile = new File(descDir);
if(!pathFile.exists()){
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile);
for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
ZipEntry entry = (ZipEntry)entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;
//判断路径是否存在,不存在则创建文件路径
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if(!file.exists()){
file.mkdirs();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if(new File(outPath).isDirectory()){
continue;
}
//输出文件路径信息
System.out.println(outPath);
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
System.out.println("******************解压完毕********************");
}
解压的时候,针对文件夹判断创建不存在的文件夹,对文件夹只创建,不进行解压..因为解压是针对文件的,不是文件夹,文件夹需要自己创建。
测试方法:
[java] view plaincopyprint?
public static void main(String[] args) throws IOException {
/**
* 压缩文件
*/
File[] files = new File[]{new File("d:/English"),new File("d:/发放数据.xls"),new File("d:/中文名称.xls")};
File zip = new File("d:/压缩.zip");
ZipFiles(zip,"abc",files);
/**
* 解压文件
*/
File zipFile = new File("d:/压缩.zip");
String path = "d:/zipfile/";
unZipFiles(zipFile, path);
}
相关推荐
在Java编程语言中,`ZipUtil`文件压缩工具类是一个非常实用的工具,它利用了Java内置的`java.util.zip`包中的`ZipEntry`类来实现文件或目录的压缩功能。`ZipUtil`通常被设计为一个静态类,提供一系列静态方法,使得...
在Java编程环境中,打包...总的来说,Java提供了丰富的API来处理文件压缩,`ZIPUtil`可能是封装了这些API的实用工具,方便开发者进行文件和文件夹的打包工作。在实际应用中,可以结合具体需求进行相应的定制和优化。
Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,
在Java编程语言中,处理文件压缩任务是一项常见的需求。`ZipUtil`是一个专门用于文件压缩的工具类,它解决了在处理包含中文字符的文件或目录时可能出现的乱码问题。`ZipEntry`是Java标准库`java.util.zip`包中的核心...
Java压缩文件工具类ZipUtil使用方法代码示例 Java压缩文件工具类ZipUtil是一个功能强大且实用的压缩文件工具类,通过使用Java的Zip输入输出流实现压缩和解压文件。下面是对ZipUtil类的详细介绍和使用方法代码示例。...
java 文件zip解压缩,单个文件以及多个文件,有需要的请下载。
在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...
包含各种工具类文件如ChangePinYin.java、CollectionUtil.java、DateUtil.java、DBConnectionUtil.java、FileUtil.java、FtpUtil.java、...java、MathUtil.java、MD5Util.java、StringUtil.java、ZipUtil.java...
java解压以及压缩zip,可运行程序!
`ZipUtil.rar`这个文件很可能包含了一个Java库,用于处理ZIP压缩格式的文件操作,如遍历、解压和压缩。这里我们将深入探讨与Java、ZIP格式以及文件夹操作相关的知识点。 1. **Java I/O流**:Java提供了丰富的I/O流...
加密压缩 解密解压 java编写 不需jdk环境 exe双击即可运行
我自己一直使用的辅助类,压缩包的内容如下:Base64Util.java。DateUtil.java。ExportExcelUtilT.java。FileUtils.java。GPSUtil.java。ImageBase64Utils.java。ImageGenerationUtil.java。...ZipUtil.java
下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\...
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!Jodd = Tools IoC MVC DB AOP TX JSON HTML < 1.5 MbJodd 被分成众多模块,按需选择,其中工具类模块有:jodd-core 一些工具类...
此工具类利用freemarker模板生成单个word文档到浏览器,同时支持多个word文档打包压缩后下载到浏览器,