From 7bbb19c671bb5b402cfad8d903c5dfab4fe379bf Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期六, 23 三月 2024 17:05:27 +0800 Subject: [PATCH] FTP备份代码更新,待实际调试结果 --- src/main/java/com/whyc/service/FtpService.java | 89 ++++++++++++++++++-------------------------- 1 files changed, 36 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/whyc/service/FtpService.java b/src/main/java/com/whyc/service/FtpService.java index 3fa2a1f..1fe8578 100644 --- a/src/main/java/com/whyc/service/FtpService.java +++ b/src/main/java/com/whyc/service/FtpService.java @@ -18,8 +18,6 @@ import java.util.Arrays; import java.util.Date; import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.stream.Collectors; @ConditionalOnProperty(prefix = "configFile",name = "type",havingValue = "2") @Service @@ -27,73 +25,58 @@ public class FtpService { //瀹氭椂涓婁紶鎸囧畾鐩綍涓嬫枃浠�,姣忓懆浜斿噷鏅ㄥ紑鍚浠� @Scheduled(cron = "59 59 23 ? * FRI") - //@Scheduled(cron = "0/10 * * * * ?") - private void sendFtpFile() throws IOException, FTPException, InterruptedException, ParseException { - //鍏堣繛鎺tp鏈嶅姟鍣�,鑾峰彇澶囦唤鐩綍,淇濈暀3娆�.杩欓噷鏄粠2023骞�4鏈堝紑濮嬭繘琛屼繚鐣� + //@Scheduled(cron = "0 29 15 * * ?") + public void sendFtpFile() throws IOException, FTPException, ParseException { + //鍏堣繛鎺tp鏈嶅姟鍣� 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)); - } - - - String fileDirName = FileDirPath.getFileDirName(); - String rootDoc=fileDirName+File.separator+"doc_file"; String timeStr= ActionUtil.sdfwithFTP.format(new Date()); ftpRemote.mkdir(timeStr); - ftpRemote.disconnect(); + //澶囦唤杩囩▼鏄惁鍑虹幇杩囬棶棰�,鏍囪瘑绗� + boolean isError=false; try { File docFile = new File(rootDoc); File[] fileList = docFile.listFiles(); - List<File> list = Arrays.asList(fileList); - for (File file:list) { + //File[] fileList2 = new File[fileList.length]; + //BeanUtils.copyProperties(fileList2,fileList); + for (File file:fileList) { //鍘嬬缉浼犺緭 File fileZip = new File(file.getAbsolutePath() + ".zip"); ZipUtils.toZip(file.getAbsolutePath(),new FileOutputStream(fileZip),true); //System.out.println(fileZip.toString()+"鍘嬬缉瀹屾瘯"); + //System.out.println("杩涜FTP浼犺緭涓�..."); + try { + //ZipUtils.toZip(file.getAbsolutePath(),new FileOutputStream(fileZip),true); + String pathName=timeStr+"/"+file.getName()+".zip"; + //System.out.println("浼犺緭鐩爣璺緞纭涓�:"+pathName); + ftpRemote.uploadFile2(fileZip, pathName); + //System.out.println(fileZip+"浼犺緭瀹屾瘯"); + fileZip.delete(); + //System.out.println(fileZip+"浼犺緭涓浆鍘嬬缉鍖呭垹闄ゅ畬姣�"); + } catch (Exception e) { + isError = true; + e.printStackTrace(); + fileZip.delete(); + } } - //System.out.println("杩涜FTP浼犺緭涓�..."); - CountDownLatch latch = new CountDownLatch(list.size()+1); - - for (File file:list) { - new Thread(){ - @Override - public void run() { - //鍘嬬缉浼犺緭 - File fileZip = new File(file.getAbsolutePath() + ".zip"); - //System.out.println("绾跨▼鍐� 鍘嬬缉鍚庣殑鐩爣璺緞涓�:"+fileZip.toString()); - FtpHelper ftp = new FtpHelper(YamlProperties.ftpIp, YamlProperties.ftpPort, YamlProperties.ftpUserName, YamlProperties.ftpPassword); - try { - //ZipUtils.toZip(file.getAbsolutePath(),new FileOutputStream(fileZip),true); - String pathName=timeStr+"/"+file.getName()+".zip"; - //System.out.println("浼犺緭鐩爣璺緞纭涓�:"+pathName); - ftp.uploadFile2(fileZip, pathName); - //System.out.println(fileZip+"浼犺緭瀹屾瘯"); - fileZip.delete(); - //System.out.println(fileZip+"浼犺緭涓浆鍘嬬缉鍖呭垹闄ゅ畬姣�"); - - ftp.disconnect(); - latch.countDown(); - } catch (Exception e) { - e.printStackTrace(); - fileZip.deleteOnExit(); - ftp.disconnect(); - latch.countDown(); - } - } - }.start(); - - } - latch.countDown(); - latch.await(); //System.out.println("浼犺緭瀹屾瘯"); + + //鑾峰彇澶囦唤鐩綍,淇濈暀4娆�. + //濡傛灉杩囩▼鍑虹幇閿欒,鍒欎笉鍒犻櫎 + if (!isError) { + String[] dirList = ftpRemote.getDirList(); + List<String> dirList2 = Arrays.asList(dirList); + + for (int i = 0; i < dirList2.size()-4; i++) { + ftpRemote.deleteDir(dirList2.get(i)); + } + } } catch (Exception e) { - e.printStackTrace(); + + }finally { + ftpRemote.disconnect(); } } } -- Gitblit v1.9.1