如何通过 Java 编程语言观察目录更改

在本文中,我们将学习如何通过 Java 编程语言观察目录更改。Java 提供了一种健壮而有效的方法,可以通过 java.nio.file 包来监视目录中的更改。WatchService API 允许开发人员接收有关特定目录中各种事件(如文件创建、删除和修改)的通知。

导入所需的包

WatchService 接口在 java.nio.file 包中可用。我们可以使用此文件扩展名的 WatchService 接口。

包:

import java.nio.file.* 

创建 WatchService 的实例

我们可以使用 WatchService 功能。通过创建 WatchService 实例的实例 java.nio.file 文件系统类。

WatchService watchService = FileSystems.getDefault().newWatchService()

实施步骤

  • 步骤 1:创建监视服务
  • 第 2 步:指定应该监视的目录。
  • 第 3 步:注册特定事件的目录路径。
  • 第 4 步:在无限循环中轮询事件。
  • 第 5 步:从事件上下文中获取每个事件的文件名。
  • 第 6 步:检查每个事件的类型。
  • 第 7 步:对每种类型的事件执行操作。
  • 第 8 步:重置手表键。

在 Java 中监视目录更改的示例

以下程序演示了使用 WatchService 的当前目录更改

  • 爪哇岛

// Java Program

import java.io.IOException;

import java.nio.file.*;

// Driver Class

public class FileData {

    // Main Function

    public static void main(String[] args) {

        try {

            // Specify the directory which supposed to be watched

            Path directoryPath = Paths.get("./");

            // Create a WatchService

            WatchService watchService = FileSystems.getDefault().newWatchService();

            // Register the directory for specific events

            directoryPath.register(watchService,

                    StandardWatchEventKinds.ENTRY_CREATE,

                    StandardWatchEventKinds.ENTRY_DELETE,

                    StandardWatchEventKinds.ENTRY_MODIFY);

            System.out.println("Watching directory: " + directoryPath);

            // Infinite loop to continuously watch for events

            while (true) {

                WatchKey key = watchService.take();

                for (WatchEvent<?> event : key.pollEvents())

                {

                    // Handle the specific event

                    if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE)

                    {

                        System.out.println("File created: " + event.context());

                    }

                    else if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE)

                    {

                        System.out.println("File deleted: " + event.context());

                    }

                    else if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY)

                    {

                        System.out.println("File modified: " + event.context());

                    }

                }

                // To receive further events, reset the key

                key.reset();

            }

        }

        catch (IOException | InterruptedException e)

        {

            e.printStackTrace();

        }

    }

}

输出:

以下是输出视频,以便更好地理解结果。

视频复制-1

标准WatchEventKinds

  • StandardWatchEventKinds.ENTRY_CREATE:当监视目录中有新条目时,会提示。
  • StandardWatchEventKinds.ENTRY_DELETE:当在监视目录中删除或移动条目时,将提示。
  • StandardWatchEventKinds.ENTRY_MODIFY:当监视目录中的现有条目被修改时,将提示。

在广阔的后端开发世界中感到迷茫?是时候做出改变了!加入我们的 Java 后端开发 - 现场课程,踏上激动人心的旅程,高效、按时地掌握后端开发。
我们提供什么:

  • 综合课程
  • 高效学习的专家指导
  • 实际项目的实践经验
  • 与100,000 +成功的极客的良好记录
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值