From a9dec8246302c16850b330016f34913028f5fd66 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期五, 07 四月 2023 10:02:36 +0800
Subject: [PATCH] 修复FTP文件备份

---
 src/main/java/com/whyc/service/FtpService.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/whyc/service/FtpService.java b/src/main/java/com/whyc/service/FtpService.java
index 1cb3d04..1a17037 100644
--- a/src/main/java/com/whyc/service/FtpService.java
+++ b/src/main/java/com/whyc/service/FtpService.java
@@ -1,5 +1,6 @@
 package com.whyc.service;
 
+import com.enterprisedt.net.ftp.FTPException;
 import com.whyc.constant.YamlProperties;
 import com.whyc.dto.FileDirPath;
 import com.whyc.dto.FtpHelper;
@@ -11,15 +12,31 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.stream.Collectors;
 
 @Service
 @EnableScheduling   // 2.寮�鍚畾鏃朵换鍔�
 public class FtpService {
     //瀹氭椂涓婁紶鎸囧畾鐩綍涓嬫枃浠�
     @Scheduled(cron = "59 59 23 ? * FRI")
-    private void sendFtpFile(){
+    //@Scheduled(cron = "0/10 * * * * ?")
+    private void sendFtpFile() throws IOException, FTPException, InterruptedException {
+        //鍏堣繛鎺tp鏈嶅姟鍣�,鑾峰彇澶囦唤鐩綍,淇濈暀3娆�.杩欓噷鏄粠2023骞�4鏈堝紑濮嬭繘琛屼繚鐣�
+        FtpHelper ftpRemote = new FtpHelper(YamlProperties.ftpIp, YamlProperties.ftpPort, YamlProperties.ftpUserName, YamlProperties.ftpPassword);
+        String[] dirList = ftpRemote.getDirList();
+        List<String> dirList2 = Arrays.asList(dirList);
+        dirList2 = dirList2.stream().filter(item->Integer.parseInt(item.substring(0,4))>=2023 && Integer.parseInt(item.substring(5,7))>=4).collect(Collectors.toList());
+        for (int i = 0; i < dirList2.size()-3; i++) {
+            ftpRemote.deleteDir(dirList2.get(i));
+        }
+        ftpRemote.disconnect();
+
+
         FtpHelper ftp = new FtpHelper(YamlProperties.ftpIp, YamlProperties.ftpPort, YamlProperties.ftpUserName, YamlProperties.ftpPassword);
         String fileDirName = FileDirPath.getFileDirName();
         String rootFace=fileDirName+File.separator+"face";
@@ -31,23 +48,46 @@
             File filerootFace = new File(rootFace+".zip");
             ftp.uploadFile(filerootFace, timeStr+"/face.zip");
             filerootFace.delete();
+            ftp.disconnect();
 
             /*FileOutputStream forootDoc = new FileOutputStream(new File(rootDoc+".zip"));
             ZipUtils.toZip(rootDoc, forootDoc,true);
             File filerootDoc = new File(rootDoc+".zip");
             ftp.uploadFile(filerootDoc, timeStr+"/doc_file.zip");
             filerootDoc.delete();*/
-            List<File> list=ftp.getFileList(rootDoc);
-            if(list!=null&&list.size()>0){
+            //List<File> list=ftp.getFileList(rootDoc);
+            File docFile = new File(rootDoc);
+            //File docFile = new File("F:\\BaiduNetdiskDownload");
+            File[] list = docFile.listFiles();
+            CountDownLatch latch = new CountDownLatch(list.length+1);
+            if(list!=null&&list.length>0){
                 for (File file:list) {
-                    String name=file.getPath().substring(file.getPath().lastIndexOf("doc_file"));
-                    String pathName=timeStr+"/"+name.replace("\\","/");
-                    ftp.uploadFile(file, pathName);
+                    new Thread(){
+                        @Override
+                        public void run() {
+                            //鍘嬬缉浼犺緭
+                            File fileZip = new File(file.getAbsolutePath() + ".zip");
+                            try {
+                                ZipUtils.toZip(file.getAbsolutePath(),new FileOutputStream(fileZip),true);
+                                String pathName=timeStr+"/doc_file/"+file.getName()+".zip";
+                                FtpHelper ftp = new FtpHelper(YamlProperties.ftpIp, YamlProperties.ftpPort, YamlProperties.ftpUserName, YamlProperties.ftpPassword);
+                                ftp.uploadFile(fileZip, pathName);
+                                fileZip.delete();
+                                ftp.disconnect();
+                                latch.countDown();
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                latch.countDown();
+                            }
+                        }
+                    }.start();
+
                 }
             }
+            latch.countDown();
+            latch.await();
         } catch (Exception e) {
             e.printStackTrace();
         }
-        ftp.disconnect();
     }
 }

--
Gitblit v1.9.1