zoukankan
html css js c++ java
java zip递归压缩解压代码
ZIP压缩类
import
java.io.BufferedInputStream;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.List;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipOutputStream;
public
class
ZipCompress
{
/** */
/**
*/
/** */
/**
*
@param
args
*/
public
static
void
main(String[] args)
throws
IOException
{
compress(
"
D:/tomcat-5.5.20
"
,
"
d:/test/testZip.zip
"
);
}
/** */
/**
*/
/** */
/**
* 递归压缩文件
*
@param
source 源路径,可以是文件,也可以目录
*
@param
destinct 目标路径,压缩文件名
*
@throws
IOException
*/
private
static
void
compress(String source,String destinct)
throws
IOException
{
List fileList
=
loadFilename(
new
File(source));
ZipOutputStream zos
=
new
ZipOutputStream(
new
FileOutputStream(
new
File(destinct)));
byte
[] buffere
=
new
byte
[
8192
];
int
length;
BufferedInputStream bis;
for
(
int
i
=
0
;i
<
fileList.size();i
++
)
{
File file
=
(File) fileList.get(i);
zos.putNextEntry(
new
ZipEntry(getEntryName(source,file)));
bis
=
new
BufferedInputStream(
new
FileInputStream(file));
while
(
true
)
{
length
=
bis.read(buffere);
if
(length
==-
1
)
break
;
zos.write(buffere,
0
,length);
}
bis.close();
zos.closeEntry();
}
zos.close();
}
/** */
/**
*/
/** */
/**
* 递归获得该文件下所有文件名(不包括目录名)
*
@param
file
*
@return
*/
private
static
List loadFilename(File file)
{
List filenameList
=
new
ArrayList();
if
(file.isFile())
{
filenameList.add(file);
}
if
(file.isDirectory())
{
for
(File f:file.listFiles())
{
filenameList.addAll(loadFilename(f));
}
}
return
filenameList;
}
/** */
/**
*/
/** */
/**
* 获得zip entry 字符串
*
@param
base
*
@param
file
*
@return
*/
private
static
String getEntryName(String base,File file)
{
File baseFile
=
new
File(base);
String filename
=
file.getPath();
//
int index=filename.lastIndexOf(baseFile.getName());
if
(baseFile.getParentFile().getParentFile()
==
null
)
return
filename.substring(baseFile.getParent().length());
return
filename.substring(baseFile.getParent().length()
+
1
);
}
}
ZIP解压类
import
java.io.BufferedOutputStream;
import
java.io.File;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.util.Enumeration;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipFile;
public
class
ZipDecompression
{
/** */
/**
*/
/** */
/**
*
@param
args
*
@throws
IOException
*/
public
static
void
main(String[] args)
throws
IOException
{
decompression(
"
d:/test/testZip.zip
"
,
"
d:/test/un
"
);
}
/** */
/**
*/
/** */
/**
* 解压ZIP文件
*
@param
zipFile 要解压的ZIP文件路径
*
@param
destination 解压到哪里
*
@throws
IOException
*/
public
static
void
decompression(String zipFile,String destination)
throws
IOException
{
ZipFile zip
=
new
ZipFile(zipFile);
Enumeration en
=
zip.entries();
ZipEntry entry
=
null
;
byte
[] buffer
=
new
byte
[
8192
];
int
length
=-
1
;
InputStream input
=
null
;
BufferedOutputStream bos
=
null
;
File file
=
null
;
while
(en.hasMoreElements())
{
entry
=
(ZipEntry)en.nextElement();
if
(entry.isDirectory())
{
System.out.println(
"
directory
"
);
continue
;
}
input
=
zip.getInputStream(entry);
file
=
new
File(destination,entry.getName());
if
(
!
file.getParentFile().exists())
{
file.getParentFile().mkdirs();
}
bos
=
new
BufferedOutputStream(
new
FileOutputStream(file));
while
(
true
)
{
length
=
input.read(buffer);
if
(length
==-
1
)
break
;
bos.write(buffer,
0
,length);
}
bos.close();
input.close();
}
zip.close();
}
}
查看全文
相关阅读:
Devexpress之LayoutControl的使用及其控件布局设计
C#入门笔记3 表达式及运算符2
C#入门笔记3 表达式及运算符
C#入门笔记2 变量
C#入门笔记1
Devexpress之GridControl显示序列号
C++学习之重载运算符1
解决"找不到该项目”无法删除该文件
删除鼠标右键时“保存至360云盘”
CSS基础知识——选择器
原文地址:https://www.cnblogs.com/pricks/p/1600054.html
最新文章
CSS尺寸 pageX;clientX;clientWidth关系(三)
Vite原理
前端模块化
React状态管理—Dva使用(二)
mac利用safari浏览器代理不同浏览器处理兼容问题
前端构建工具webpack在项目中优化(三)
React Hooks之memo useMemo useCallback
生成器的理解
Tornado学习(五)
Tornado学习(四)
热门文章
Tornado学习(三)
Tornado学习(二)
Tornado学习(一)
Python 自动给数字前面补0
配置文件的自动化更新(v5.1)
Python-文件夹的拷贝操作
CCNA基础01
MyBatis配置文件之概述
IntelJ IDEA创建简单Java工程
MyBatis学习总结(一)
Copyright © 2011-2022 走看看