当前位置: 首页> 教育> 大学 > 机械加工分类_球形网架结构厂家_电脑培训班一般要学多久_十大舆情网站

机械加工分类_球形网架结构厂家_电脑培训班一般要学多久_十大舆情网站

时间:2025/7/12 20:23:51来源:https://blog.csdn.net/m0_37996243/article/details/144856644 浏览次数:1次
机械加工分类_球形网架结构厂家_电脑培训班一般要学多久_十大舆情网站
package com.buptnu.util;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;public class ZipUtil {/*** 将若干个文件或目录压缩成zip文件到指定路径* @param zipPath      压缩后的zip文件路径* @param filePathList 需要压缩的文件*/public static void zipDirectory(String zipPath, List<String> filePathList) {ZipOutputStream zipOut = null;try {FileOutputStream fileOut = new FileOutputStream(zipPath);zipOut = new ZipOutputStream(fileOut);for (String filePath : filePathList) {File file = new File(filePath);if (file.exists()) {ZipUtil.zipDirectory(zipOut, filePath, "");}}} catch (Exception e) {e.printStackTrace();} finally {if (zipOut != null) {try {zipOut.close();} catch (IOException e) {}}}}/*** 将指定目录递归地添加到 ZIP 输出流中** @param zos         ZIP 输出流* @param directory   要压缩的目录路径* @throws IOException 如果发生 I/O 错误*/public static void zipDirectory(ZipOutputStream zos, String filePath, String parentDirectory) throws IOException {File file = new File(filePath);String fileName = ("".equals(parentDirectory) ? "" : parentDirectory + "/") + file.getName();if (file.isDirectory()) {// 目录// 创建目录zos.putNextEntry(new ZipEntry(fileName + "/"));zos.closeEntry();for (File fileItem : file.listFiles()) {zipDirectory(zos, fileItem.getAbsolutePath(), fileName);}} else if (file.isFile()) {// 文件// 如果是文件,则添加文件条目到 ZIP 文件zos.putNextEntry(new ZipEntry(fileName));FileInputStream fis = null;try {fis = new FileInputStream(file);byte[] buffer = new byte[1024];int length;while ((length = fis.read(buffer)) >= 0) {zos.write(buffer, 0, length);}} finally {if (fis != null) {fis.close();}}zos.closeEntry();}}/*** 解压ZIP文件到指定目录,保持目录结构* @param zipFilePath 压缩包地址* @param destDirectory 目标目录* @throws IOException*/public static void unzip(String zipFilePath, String destDirectory) throws IOException {Path destDirPath = Paths.get(destDirectory);if (!Files.exists(destDirPath)) {Files.createDirectories(destDirPath);}ZipFile zipFile = null;try {zipFile = new ZipFile(zipFilePath);Enumeration<? extends ZipEntry> entries = zipFile.entries();while (entries.hasMoreElements()) {ZipEntry entry = entries.nextElement();Path filePath = destDirPath.resolve(entry.getName()).normalize();// 检查条目是否是目录if (entry.isDirectory()) {// 如果是目录,则创建它(包括父目录)Files.createDirectories(filePath);} else {// 如果不是目录,则提取文件到相应位置// 确保父目录存在Files.createDirectories(filePath.getParent());InputStream is = null;OutputStream os = null;try {is = zipFile.getInputStream(entry);os = Files.newOutputStream(filePath, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) > 0) {os.write(buffer, 0, len);}} finally {if (is != null) {is.close();}if (os != null) {os.close();}}}}} finally {if (zipFile != null) {zipFile.close();}}}public static void main(String[] args) throws IOException {String zipPath = "D:\\zip\\压缩包.zip";// 压缩List<String> directoryList = new ArrayList<String>();directoryList.add("D:\\邮件附件");directoryList.add("D:\\问题处理记录");directoryList.add("D:\\开发工具与环境配置\\开发环境配置.docx");zipDirectory(zipPath, directoryList);// 解压unzip(zipPath, "D:\\\\zip");}}
关键字:机械加工分类_球形网架结构厂家_电脑培训班一般要学多久_十大舆情网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: