java如何解压rar文件怎么打开_java对文件进行解压操作-RAR文件

每天分享java小知识 小干活,欢迎关注转发评论交流,每天一点进步!package com.zldc.oaToKnowledgePlugin.util;

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;

import org.springframework.util.StringUtils;

/**

* 解压Zip文件工具类

*

* @author pzx

*

*/

public class ZipUtil {

private static final int buffer = 2048;

/**

* @param path 文件路径

* @param savePath 要解压到路径

* @param reName 解压后的文件名称

* @return

*/

public static boolean unZip(String path, String savePath, String reName) {

int count = -1;

File file = null;

InputStream is = null;

FileOutputStream fos = null;

BufferedOutputStream bos = null;

File savepathFile = new File(savePath); // 创建保存目录

if (!savepathFile.exists()) {

savepathFile.mkdirs();

}

ZipFile zipFile = null;

try {

zipFile = new ZipFile(path);

Enumeration> entries = zipFile.entries();

while (entries.hasMoreElements()) {

byte buf[] = new byte[buffer];

ZipEntry entry = (ZipEntry) entries.nextElement();

String filename = entry.getName().substring(entry.getName().lastIndexOf("\\") + 1,

entry.getName().length());

boolean ismkdir = false;

if (filename.lastIndexOf("/") != -1) { // 检查此文件是否带有文件夹

ismkdir = true;

}

if (!StringUtils.isEmpty(reName)) {

filename = savePath + reName;

} else {

filename = savePath + filename;

}

if (entry.isDirectory()) { // 如果是文件夹先创建

file = new File(filename);

file.mkdirs();

continue;

}

file = new File(filename);

if (!file.exists()) { // 如果是目录先创建

if (ismkdir) {

new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); // 目录先创建

}

}

file.createNewFile(); // 创建文件

is = zipFile.getInputStream(entry);

fos = new FileOutputStream(file);

bos = new BufferedOutputStream(fos, buffer);

while ((count = is.read(buf)) > -1) {

bos.write(buf, 0, count);

}

bos.flush();

bos.close();

fos.close();

is.close();

}

zipFile.close();

} catch (IOException ioe) {

ioe.printStackTrace();

return false;

} finally {

try {

if (bos != null) {

bos.close();

}

if (fos != null) {

fos.close();

}

if (is != null) {

is.close();

}

if (zipFile != null) {

zipFile.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值