From a28eb2cb2abdd3f27075ca8468cf1a2bbf7de3cf Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期五, 10 一月 2025 15:50:52 +0800 Subject: [PATCH] [add]h5读取改造 --- src/main/java/com/se/simu/utils/ZipUtils.java | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/se/simu/utils/ZipUtils.java b/src/main/java/com/se/simu/utils/ZipUtils.java index 5045b6c..a480835 100644 --- a/src/main/java/com/se/simu/utils/ZipUtils.java +++ b/src/main/java/com/se/simu/utils/ZipUtils.java @@ -2,21 +2,24 @@ import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ZipUtil; -import org.apache.commons.io.FileUtils; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; 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; /** * zip */ public class ZipUtils { // 瑙e帇zip鏍煎紡 - public static void unzip(String zipFilePath, String destDir){ + public static void unzip(String zipFilePath, String destDir) { //鎵�鏈夌殑鏂囦欢璺緞 List<String> filePaths = new ArrayList<>(); @@ -68,4 +71,101 @@ } } } + + public static void zip(String sourceDirPath, String zipFilePath) throws IOException { + Path sourceDir = Paths.get(sourceDirPath); + try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFilePath))) { + Files.walk(sourceDir).forEach(path -> { + try { + String zipEntryName = sourceDir.relativize(path).toString(); + if (Files.isDirectory(path)) { + // 濡傛灉鏄洰褰曪紝鍒涘缓涓�涓┖鐨刏IP鐩綍 + if (!zipEntryName.isEmpty()) { + zipOutputStream.putNextEntry(new ZipEntry(zipEntryName + "/")); + } + } else { + // 濡傛灉鏄枃浠讹紝鍐欏叆ZIP鏂囦欢 + zipOutputStream.putNextEntry(new ZipEntry(zipEntryName)); + Files.copy(path, zipOutputStream); + } + zipOutputStream.closeEntry(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + } + + public static void toZarr(String sourceDir, String zipFile) { + try { + zip(sourceDir, zipFile); + System.out.println("鏂囦欢澶瑰凡鎴愬姛鍘嬬缉涓�: " + zipFile); + updateFileSuffix(zipFile, "zarr"); + deleteFile(sourceDir); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void updateFileSuffix(String filePath, String newSuffix) { + // 鍒涘缓File瀵硅薄 + File file = new File(filePath); + + // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦� + if (file.exists()) { + // 鑾峰彇鏂囦欢鍚嶅拰鍚庣紑 + String fileName = file.getName(); + int dotIndex = fileName.lastIndexOf('.'); + if (dotIndex > 0) { + // 鍒嗙鏂囦欢鍚嶅拰鍚庣紑 + String name = fileName.substring(0, dotIndex); + // 缁勫悎鏂扮殑鏂囦欢鍚� + String newFileName = name + '.' + newSuffix; + + // 閲嶅懡鍚嶆枃浠� + File newFile = new File(file.getParent(), newFileName); + if (file.renameTo(newFile)) { + System.out.println("鏂囦欢閲嶅懡鍚嶆垚鍔燂細" + newFile.getName()); + } else { + System.out.println("鏂囦欢閲嶅懡鍚嶅け璐ャ��"); + } + } else { + System.out.println("鏂囦欢娌℃湁鍚庣紑銆�"); + } + } else { + System.out.println("鏂囦欢涓嶅瓨鍦ㄣ��"); + } + } + + public static void deleteFile(String path) { + // 鐩爣鏂囦欢澶圭殑璺緞 + File directory = new File(path); + // 妫�鏌ユ枃浠跺す鏄惁瀛樺湪 + if (!directory.exists()) { + System.out.println("鏂囦欢澶逛笉瀛樺湪锛�"); + return; // 鏂囦欢澶逛笉瀛樺湪锛岄��鍑虹▼搴� + } + // 璋冪敤deleteDirectory鏂规硶鍒犻櫎鏂囦欢澶瑰強鍏跺唴瀹� + if (deleteDirectory(directory)) { + System.out.println("鏂囦欢澶瑰凡鎴愬姛鍒犻櫎锛�"); + } else { + System.out.println("鏂囦欢澶瑰垹闄ゅけ璐ワ紒"); + } + } + + // 閫掑綊鍒犻櫎鏂囦欢澶瑰強鍏跺唴瀹圭殑鏂规硶 + public static boolean deleteDirectory(File directory) { + if (directory.isDirectory()) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + // 閫掑綊澶勭悊 + deleteDirectory(file); + } + } + } + // 鍒犻櫎褰撳墠鏂囦欢鎴栨枃浠跺す + return directory.delete(); + } + } -- Gitblit v1.9.3