本文主要是介绍java 解压文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
java 解压文件
//要压缩的文件
String zipName = "D:\\file\\test.zip";
//压缩到的目录
String targetDirName = "D:\\upZip"
/**
* @Description: 将指定的zip文件解压到指定目录下,其中:zipName:文件名,targetDirName:需解压到的目录
**/
public static File upzipFile(String zipName, String targetDirName) throws Exception {
if (!targetDirName.endsWith(File.separator)) {
targetDirName += File.separator;
}
//防止乱码,获得压缩的格式
String fileEncode = EncodeUtil.getEncode(zipName, true);
try {
// 根据zip文件创建ZipFile对象,此类的作用是从zip文件读取条目
ZipFile zipFile = new ZipFile(zipName, Charset.forName(fileEncode));
ZipEntry zn = null;
String entryName = null;
String targetFileName = null;
byte[] buffer = new byte[4096];
int bytes_read;
Enumeration entrys = zipFile.entries(); // 获取ZIP文件里所有的文件条目的名字
File targetFile = null;
FileOutputStream os = null;
InputStream is = null;
//entrys.hasMoreElements();
while (entrys.hasMoreElements()) { // 循环遍历所有的文件条目的名字
zn = (ZipEntry) entrys.nextElement();
System.out.println("zn:" + zn);
entryName = zn.getName(); // 获得每一条文件的名字
System.out.println("entryName:" + entryName);
targetFileName = targetDirName + entryName;
if (zn.isDirectory()) {
new File(targetFileName).mkdirs(); // 如果zn是一个目录,则创建目录
continue;
} else {
new File(targetFileName).getParentFile().mkdirs();// 如果zn是文件,则创建父目录
}
targetFile = new File(targetFileName); // 否则创建文件
System.out.println("正在创建文件:" + targetFile.getAbsolutePath());
os = new FileOutputStream(targetFile);// 打开文件输出流
is = zipFile.getInputStream(zn); // 从ZipFile对象中打开entry的输入流
while ((bytes_read = is.read(buffer)) != -1) {
os.write(buffer, 0, bytes_read);
}
}
os.close(); // 关闭流
is.close();
zipFile.close();
System.out.println("解压缩" + zipName + "成功!");
return targetFile;
} catch (IOException err) {
System.err.println("解压缩" + zipName + "失败: " + err);
}
return null;
}
这篇关于java 解压文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!