智慧保安后台管理项目备份
tangzy
2021-08-21 8dda58f0c652dbe6a8307eedd431957acb1ec960
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package org.springblade.modules.FTP;
 
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.io.IOException;
import java.io.InputStream;
 
@Component
public class monitor {
    //ftp服务器IP地址
    private static String ftpHost = "192.168.0.105";
    //ftp服务器端口
    private static int ftpPort = 21;
    //ftp服务器用户名
    private static String ftpUserName = "yly";
    //ftp服务器密码
    private static String ftpPassword = "Yly@123";
    //ftp服务器路径
    private static String ftpPath = "anbao/sql.json";
 
    @Scheduled(cron = "*/5 * * * * ?")
    public static boolean isFTPFileExist() {
 
        FTPClient ftp = new FTPClient();
 
        try {
 
            // 连接ftp服务器
 
            ftp.connect(ftpHost, ftpPort);
 
            // 登陆
 
            ftp.login(ftpUserName, ftpPassword);
 
            // 检验登陆操作的返回码是否正确
 
            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
 
                ftp.disconnect();
 
                return false;
 
            }
 
            ftp.enterLocalActiveMode();
 
            // 设置文件类型为二进制,与ASCII有区别
 
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
 
            // 设置编码格式
 
            ftp.setControlEncoding("GBK");
 
            // 提取绝对地址的目录以及文件名
 
            ftpPath = ftpPath.replace("ftp://" + ftpHost + ":" + ftpPort + "/", "");
 
            String dir = ftpPath.substring(0, ftpPath.lastIndexOf("/"));
 
            String file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
 
            // 进入文件所在目录,注意编码格式,以能够正确识别中文目录
 
            ftp.changeWorkingDirectory(new String(dir.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
 
            // 检验文件是否存在
 
            InputStream is = ftp.retrieveFileStream(new String(file.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
 
            if (is == null || ftp.getReplyCode() == FTPReply.FILE_UNAVAILABLE) {
                System.out.println(false);
                return false;
 
            }
 
            if (is != null) {
                System.out.println(true);
                is.close();
 
                ftp.completePendingCommand();
 
            }
 
            return true;
 
        } catch (Exception e) {
 
            e.printStackTrace();
 
        } finally {
 
            if (ftp != null) {
 
                try {
 
                    ftp.disconnect();
 
                } catch (IOException e) {
 
                    e.printStackTrace();
 
                }
 
            }
 
        }
 
        return false;
 
    }
}