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