importjava.nio.file.*;publicclassFileChangeListener{publicstaticvoidmain(String[]args){try{WatchServicewatchService=FileSystems.getDefault().newWatchService();// 创建一个新的观察服务Pathpath=Paths.get("要监控的文件夹路径");// 设置监控的文件夹路径path.register(watchService,StandardWatchEventKinds.ENTRY...
首先,我们需要创建一个监听器类,用于监听目录文件的变化。可以创建一个类,命名为FileChangeListener,并实现FileChangeListener接口。 importjava.nio.file.*;importjava.nio.file.WatchService;importjava.nio.file.WatchKey;importjava.nio.file.WatchEvent;importjava.io.IOException;// 创建监听器类publicclassFileChange...
* File created Event. * * @param file The file created (ignored) */@OverridepublicvoidonFileCreate(Filefile){log.info("[Created File] : {}",file.getAbsolutePath());}/** * File changed Event. * * @param file The file changed (ignored) */@OverridepublicvoidonFileChange(Filefile){lo...
publicclassPropertiesConfListenerHelper {publicstaticbooleanregisterConfChangeListener(File file, Function<File, Map<String, AlarmConfig>>func) {try{//轮询间隔 5 秒longinterval = TimeUnit.SECONDS.toMillis(5);//因为监听是以目录为单位进行的,所以这里直接获取文件的根目录File dir =file.getParentFile();/...
public class FileWatchDemo { /** * 上次更新时间 */ public static long LAST_TIME = 0L; public static void main(String[] args) throws IOException { String fileName = "/Users/zzs/temp/1.txt"; // 创建文件,仅为实例,实践中由其他程序触发文件的变更 ...
public class FileRunner { public static void main(String[] args) throws Exception { FileMonitor fileMonitor = new FileMonitor(1000); fileMonitor.monitor("/Users/zzs/temp/", new FileListener()); fileMonitor.start(); } } 执行程序,会发现每隔1秒输入一次日志。当文件发生变更时,也会打印出对应的...
public class FileRunner {public static void main(String[] args) throws Exception {FileMonitor fileMonitor = new FileMonitor(1000);fileMonitor.monitor("/Users/zzs/temp/", new FileListener());fileMonitor.start();}} 执行程序,会发现每隔1秒输入一次日志。当文件发生变更时,也会打印出对应的日志:...
FileAlterationListener 通过继承FileAlterationListenerAdaptor,覆盖相应事件方法。这里只重写了文件改变。还有其他事件可以查看FileAlterationListener接口看下。 publicclassFileAlterationReloadextendsFileAlterationListenerAdaptor { @OverridepublicvoidonFileChange(File file) { System.out.println("文件改变"); } } ...
· 如上面registerConfChangeListener方法,传入的file是具体的配置文件,因此构建参数的时候,捞出了目录,捞出了文件名作为过滤 · 第二参数是jdk8语法,其中为具体的读取配置文件内容,并映射为对应的实体对象 一个问题,如果 func方法执行时,也抛出了异常,会怎样?
目录背景方案一:定时任务 + File#lastModified方案二:WatchService方案三:Apache Commons-IO小结 背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载。当然,在其他业务场景下,比如想实现配置文件的动态加载、日志文件的监听、FTP文件变动监听等都会遇到类似的场...