阅读量:1
要解压一个 MultipartFile(MultipartFile 是 Spring 框架中的类,用于处理上传的文件),你可以使用 java.util.zip.ZipInputStream 类。以下是一个解压 MultipartFile 的 zip 文件的示例代码:
import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class ZipFileUtil { public static void unzip(MultipartFile file, String destination) throws IOException { try (ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream())) { byte[] buffer = new byte[1024]; ZipEntry zipEntry = zipInputStream.getNextEntry(); while (zipEntry != null) { String fileName = zipEntry.getName(); File newFile = new File(destination + File.separator + fileName); if (zipEntry.isDirectory()) { newFile.mkdirs(); } else { // 如果父目录不存在,则创建父目录 File parent = newFile.getParentFile(); if (!parent.exists()) { parent.mkdirs(); } try (FileOutputStream fos = new FileOutputStream(newFile)) { int length; while ((length = zipInputStream.read(buffer)) > 0) { fos.write(buffer, 0, length); } } } zipEntry = zipInputStream.getNextEntry(); } } } }
这个 unzip
方法会将 zip 文件解压到指定的目标路径 destination
。你只需要传入一个 MultipartFile 对象和目标路径即可。注意,你需要处理 IOException 异常。
示例用法:
import org.springframework.web.multipart.MultipartFile; public class Main { public static void main(String[] args) { MultipartFile file = ...; // 获取上传的 MultipartFile 对象 String destination = "C:\\path\\to\\destination"; // 指定解压路径 try { ZipFileUtil.unzip(file, destination); // 解压成功 } catch (IOException e) { e.printStackTrace(); // 解压失败 } } }
请确保你已经导入相应的依赖,例如 spring-web
和 commons-io
。