首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
zip文件解压或压缩
时间:
2015-02-09 17:49:12
阅读:
87
评论:
0
收藏:
0
[点我收藏+]
标签:
<span style=
"font-size:18px;">
/**
* lsz
*/
public
final
class ZipUtil {
/**
* 解压zip文件
* @param unZipfile
* @param destFile
*/
public
static
void unZip(String unZipfile, String destFile) {
FileOutputStream fileOut;
File file;
InputStream inputStream;
byte[] buf =
new
byte[
1024*
4];
try {
//生成一个zip的文件
ZipFile zipFile =
new ZipFile(unZipfile,
"GBK");
//遍历zipFile中所有的实体,并把他们解压出来
for (
@SuppressWarnings(
"unchecked")
Enumeration<ZipEntry> entries = zipFile.getEntries(); entries
.hasMoreElements();) {
ZipEntry entry = entries.nextElement();
//生成他们解压后的一个文件
file =
new File(destFile+File.separator+entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
}
else {
// 如果指定文件的目录不存在,则创建之.
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
//获取出该压缩实体的输入流
inputStream = zipFile.getInputStream(entry);
fileOut =
new FileOutputStream(file);
int length =
0;
//将实体写到本地文件中去
while ((length = inputStream.read(buf)) >
0) {
fileOut.write(buf,
0, length);
}
fileOut.close();
inputStream.close();
}
}
zipFile.close();
//解压完后将原压缩文件删除
File zipfile =
new File(unZipfile);
if(zipfile.exists()){
zipfile.delete();
}
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
/**
* 一个文件夹压缩
* 压缩文件夹
* @param filepath
* @param savepath
* @throws Exception
*/
public
static
void toZip(String filepath,String savepath)
throws Exception{
File file =
new File(filepath);
if(file.exists()){
//判断导出路径是否为空,如果为空,则将压缩包生成到当前路径下
if(StringUtils.isBlank(savepath)){
savepath = filepath+
".zip";
}
else{
savepath = savepath+
".zip";
}
ZipOutputStream outPut =
new ZipOutputStream(
new FileOutputStream(
new File(savepath)));
outPut.setEncoding(
"GBK");
//设置编码
createZip(outPut,file.listFiles(),
null);
outPut.flush();
outPut.close();
}
else{
//not found
throw
new RuntimeException(
"Err :not found file exception:"+filepath);
}
}
private
static
void createZip(org.apache.tools.zip.ZipOutputStream outPut,File[] listFiles,String fuPath)
throws Exception {
for(File f : listFiles){
String name = fuPath==
null?f.getName():fuPath+
"/"+f.getName();;
if(f.isDirectory()){
outPut.putNextEntry(
new ZipEntry(name+
"/"));
createZip(outPut,f.listFiles(),name);
}
else{
outPut.putNextEntry(
new ZipEntry(name));
InputStream is =
new FileInputStream(f);
byte[] bys =
new
byte[
1024];
int len =
0;
while((len = is.read(bys))!=-
1)
outPut.write(bys,
0, len);
is.close();
outPut.flush();
}
}
}
/*
* 复制文件 只能使复制文件,不能复制文件夹
*/
public
static
void fileChannelCopy(File fromfile, File tofile) {
FileInputStream fi =
null;
FileOutputStream fo =
null;
FileChannel in =
null;
FileChannel out =
null;
try {
fi =
new FileInputStream(fromfile);
fo =
new FileOutputStream(tofile);
in = fi.getChannel();
//得到对应的文件通道
out = fo.getChannel();
//得到对应的文件通道
in.transferTo(
0, in.size(), out);
//连接两个通道,并且从in通道读取,然后写入out通道
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
fi.close();
in.close();
fo.close();
out.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}</span>
zip文件解压或压缩
标签:
原文地址:http://www.cnblogs.com/challengeof/p/4281840.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!