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