Java文件夹监听

本文介绍了如何使用Java实现文件夹监听,以便在SFTP上传TXT文件后立即进行处理。项目依赖于特定工具,主要涉及FileAlterationObserver、FileAlterationListener和FileAlterationMonitor三个类,代码简单易懂,可以直接应用于实际项目。
摘要由CSDN通过智能技术生成

好久没有写博客了,最近一直没有时间,所以补一个博客,前一段时间公司有个项目需要通过sftp的方式往服务器上传txt文件,而且时间都不确定,还需要读txt文件,所以我就写了一个监听,监听文件夹,如果又文件上传过来,就会立即收到,废话不说,直接上代码,
首先maven依赖

   <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

主要是借助这个工具中的 FileAlterationObserver, FileAlterationListener, FileAlterationMonitor 三个类来实现相关的需求场景了,当然使用也算是很简单了,以至于都不太清楚可以再怎么去说明了,直接看下面从我的一个开源项目quick-alarm中拷贝出来的代码

/**
 * @description  监听文件夹中文件的变化 ,如果又新加的文件就会监听出来
 * @author myhb
 */
@Slf4j
@Component
public class PropertiesConfListenerHelper {
   

    @PostConstruct
    public static  void  initFileMonitor() {
   
        // 监控目录
        String rootDir = "F:\\test";
        // 轮询间隔 20 秒
        Integer time = 20;
        long interval = TimeUnit.SECONDS.toMillis(time);
        // 创建一个文件观察器用于处理文件的格式,
        //                        FileFilterUtils.suffixFileFilter(".txt")
        FileAlterationObserver _observer = new FileAlterationObserver(
                rootDir,
                FileFilterUtils.and(
                        FileFilterUtils.fileFileFilter()),  //过滤文件格式
                null);
        FileAlterationObserver observer = new FileAlterationObserver(rootDir);

        observer.addListener(new FileListener(
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
监听FTP文件夹的变化,你需要使用FTPClient类来连接到FTP服务器。然后,你可以使用FTPClient类提供的一些方法来监视FTP文件夹的变化,例如: 1. 使用FTPClient.changeWorkingDirectory()方法进入要监视的文件夹。 2. 使用FTPClient.listFiles()方法获取当前文件夹中的所有文件和子文件夹。 3. 使用FTPClient.retrieveFileStream()方法获取指定文件的输入流,并使用BufferedReader读取输入流中的内容。 你可以将以上步骤封装在一个循环中,以便每隔一段时间重复执行。如果发现有新的文件文件夹被添加到FTP文件夹中,就可以执行相应的操作。 以下是一个示例代码片段,可以用来监听FTP文件夹的变化: ``` FTPClient client = new FTPClient(); client.connect("ftp.example.com"); client.login("username", "password"); while (true) { client.changeWorkingDirectory("/path/to/ftp/folder"); FTPFile[] files = client.listFiles(); for (FTPFile file : files) { if (file.isFile()) { InputStream inputStream = client.retrieveFileStream(file.getName()); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); // 处理文件内容 reader.close(); inputStream.close(); } else if (file.isDirectory()) { // 处理子文件夹 } } Thread.sleep(5000); // 暂停5秒钟 } client.logout(); client.disconnect(); ``` 请注意,上述代码仅提供了基本的框架。你需要根据自己的需求进行修改和完善。此外,还需要考虑到连接失败、文件读取异常等情况的处理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值