Java实时监听远程FTP服务器文件夹变化

概要

最近有小伙伴反馈询问 如何通过实时监听远程FTP文件夹的变化并下载到本地指定目录
针对此疑问,出一期解决方案,我在冲浪时也找到了一些比较好的案例,但是追求完美的我,怎能屈服于别人的博客,对此我研究了两天解决方案,
最终得出结论:FTP协议本身不支持实时监听文件变化。可以通过定时轮询的方式来检查目录下的文件列表

整体实现流程

1.连接到FTP服务器
2. 监听指定目录
3.检测文件变化
4.下载变化的文件

OK废话不多说,上代码ftp的搭建我就不说了

pom依赖

	<!-- 用于连接监听FTP文件夹-->
	<dependency>
	    <groupId>commons-net</groupId>
	    <artifactId>commons-net</artifactId>
	    <version>3.9.0</version>
	</dependency>
	
	<!-- lombok插件-日志输出 -->
	<dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	</dependency>

yml配置文件

#远程ftp相关配置
ftp:
  # IP
  server: 192.168.1.112
  # 端口号
  port: 21
  # ftp用户名
  user: ftpmonitor
  # ftp密码
  pwd: SolveProblem
  # 用户主目录
  dir: /home/vsftpd/ftpmonitor
  # 下载到本地目录
  localDir: /usr/local/tmp/netty/
  # 轮询监听时间
  sleep: 60000

配置类(便于读取)

import lombok.Getter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 读取yml配置文件中FTP相关配置
 *
 * @author wusiwee
 */
@Component
@ConfigurationProperties(prefix = "ftp")
public class FtpConfig {
   
   

    /** ip */
    @Getter
    private static String server;

    /** 端口 */
    @Getter
    private static Integer port;

    /** 用户 */
    @Getter
    private static String user;

    /** 密码 */
    @Getter
    private static String pwd;

    /** 服务器路径 */
    @Getter
    private static String dir;

    @Getter
    private static String localDir;

    /** 休眠时间 */
    @Getter
    private static Long sleep;

    public void setServer(String server) {
   
   
        FtpConfig.server = server;
    }

    public void setPort(Integer port) {
   
   
        FtpConfig.port = port;
    }

    public void setUser(String user) {
   
   
        FtpConfig.user = user
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值