| 
					
				 | 
			
			
				@@ -0,0 +1,98 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package test; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.jjt.common.constant.Constants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.jjt.common.domain.FileDesc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.jjt.common.utils.CompressZip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.lingala.zip4j.ZipFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.lingala.zip4j.exception.ZipException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.codec.digest.DigestUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Paths; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.StandardCopyOption; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Arrays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Comparator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * ZipTest$ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author wukai 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @date 2024/4/11 14:09 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class ZipTest { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void main(String[] args) throws ZipException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cpFile(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String xx = "zip哈哈.zip.z01"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        System.err.println(xx.endsWith(".zip")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        long splitSize = 20 * 1024 * 1024; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        ZipFile zipFile = new ZipFile("D:\\SYSTEM\\Desktop\\temp\\mongo\\test.zip"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////        CompressZip.splitZip(new File("D:\\SYSTEM\\Desktop\\temp\\mongo\\test.mp4"), zipFile, splitSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (zipFile.isSplitArchive()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            System.err.println(zipFile.isValidZipFile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////        System.err.println(zipFile.isSplitArchive()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        ZipFile test = new ZipFile("D:\\SYSTEM\\Desktop\\temp\\mongo\\test.json"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        System.err.println(test.isValidZipFile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////        System.err.println(test.isSplitArchive()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        zipFile.getSplitZipFiles().forEach(f->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            System.err.println(f.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void cpFile() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String ftpDir = "D:\\SYSTEM\\Desktop\\temp\\sync\\"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取内网同步正式目录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String syncDir = "D:\\SYSTEM\\Desktop\\temp\\sync\\cp\\"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建File对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        File dirFile = new File(ftpDir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (dirFile.isDirectory()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //先获取目录下所有json格式文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            File[] files = dirFile.listFiles(((dir, name) -> name.endsWith(".json"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (files != null && files.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Arrays.sort(files, Comparator.comparing(File::getName)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (File file : files) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ObjectMapper mapper = new ObjectMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    FileDesc desc = mapper.readValue(file, FileDesc.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    File descFile = new File(ftpDir + desc.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String md5 = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    try (InputStream is = Files.newInputStream(descFile.toPath())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        md5 = DigestUtils.md5Hex(is); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (md5.equals(desc.getMd5())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //分卷zip处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (desc.getName().endsWith(".zip")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ZipFile zipFile = new ZipFile(descFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (zipFile.isValidZipFile()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (zipFile.isSplitArchive()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    Files.move(file.toPath(), Paths.get(syncDir + file.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    List<File> splitFiles = zipFile.getSplitZipFiles(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    for (File f : splitFiles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        Files.move(f.toPath(), Paths.get(syncDir + f.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    Files.move(file.toPath(), Paths.get(syncDir + file.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    Files.move(descFile.toPath(), Paths.get(syncDir + descFile.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Files.move(file.toPath(), Paths.get(syncDir + file.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Files.move(descFile.toPath(), Paths.get(syncDir + descFile.getName()), StandardCopyOption.REPLACE_EXISTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |