| | |
| | | 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; |
| | |
| | | |
| | | 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 { |
| | | //先连接ftp服务器,获取备份目录,保留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"; |
| | |
| | | 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(); |
| | | } |
| | | } |