技术标签: JAVA 文件监听 commons-io2
监听文件变化的实现有很多种,之前使用的是commons-VFS的api,使用起来有一些不是很方便,后来摸索了下,发现commons-io-2.0 也可以实现文件的监听。
今天就来介绍一下它的用法。
首先,继承FileAlterationListenerAdaptor 实现它的功能:
import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FileListerAdapter extends FileAlterationListenerAdaptor {
private static final Logger logger = LoggerFactory.getLogger(FileListerAdapter.class);
@Override
public void onFileChange(File file) {
if (!file.exists() || !file.canRead()) {
logger.info("The file {} is not exists or is not readable!", file);
return;
}
logger.info("----The file {} is change.", file);
//TODO 读取操作
super.onFileChange(file);
}
@Override
public void onFileCreate(File file) {
if (!file.exists()) {
logger.info("The file {} is not exists!", file);
return;
}
if (!file.canRead()) {
logger.info("The file {} is not readable!", file);
return;
}
logger.info("----The file {} is created.", file);
//TODO 读取操作
super.onFileCreate(file);
}
@Override
public void onFileDelete(File file) {
logger.info("----The file {} is deleted.", file);
super.onFileDelete(file);
}
@Override
public void onDirectoryChange(File directory) {
if (!directory.exists()) {
logger.info("The directory {} is not exists!", directory);
return;
}
logger.info("----The directory {} has changed.", directory);
super.onDirectoryChange(directory);
}
@Override
public void onDirectoryCreate(File directory) {
if (!directory.exists()) {
logger.info("The directory {} is not exists!", directory);
return;
}
logger.info("----The directory {} is created.", directory);
super.onDirectoryCreate(directory);
}
@Override
public void onDirectoryDelete(File directory) {
logger.info("----The directory {} is deleted.", directory);
super.onDirectoryDelete(directory);
}
}
FileAlterationMonitor monitor = new FileAlterationMonitor(1000L);// 每隔1000毫秒扫描一次
for (File listenFile:files) {
FileAlterationObserver observer = new FileAlterationObserver(listenFile, new FileFilterImpl());
FileListerAdapter listener = new FileListerAdapter();
observer.addListener(listener);
monitor.addObserver(observer);
}
monitor.start();
这样就可以轻松实现对多个目录的文件监听,需要监听的文件可以使用正则表达式去过滤。
最近想用cmake-gui编译opencv,发现虚拟机上终端(terminal)打不开,点图标也打不开,ctrl+alt+t也没反应。然后百度了一下ctrl+alt+F1~F6可以打开终端,我试了一下我这上面是ctrl+alt+F5打开了命令行,但是用起来很不方便。网上搜了一下相关文章,基本一致认为是python3.6的问题,我看了一下自己虚拟机上也有python2.7,3.5,3.6,虽然当...
java ,javaw 和 javaws 的區別:首先,所有的這些都是java的啟動裝置,java.exe經常使用,當使用命令行輸出到window的時候,會有java.exe進程,通過任務管理器可以看到。通常 我們執行一些小的java程序的時候會有 java.exe進程在運行。javaw.exe對於我們也比較特殊,我們也能夠通過任務管理器看到javaw.exe進程的運行。javaws通常w...
GIS开发中会遇到需要使用热力图Heatmap的时候,openlayers5官方示例给出的是kml文件描述的热力图数据,开发中接触更多的还是GeoJSON格式,本文就使用GeoJSON格式来实现一个热力图。一、实现思路https://openlayers.org/en/latest/examples/heatmap-earthquakes.html官方例子是从一个kml文件解析出生成的热力...
那么findFirst()和findAny()有什么问题呢? 从我们的Javadoc( 此处和此处 )可以看出,这两个方法都从流中返回任意元素-除非流具有遇到顺序 ,在这种情况下, findFirst()返回第一个元素。 简单。 一个简单的示例如下所示: public Optional<Customer> findCustomer(String customerId) { ...
@WebService获取数据库数据idea建立webservice服务端和客户端程序,并把服务端程序放在tomcat首先要建立服务端程序,再建立客户端程序,再把服务端程序放在tomcat下,最后客户端能够获取到tomcat上webservice的数据就可以了。本文是通过建立webservice服务端程序连接另一服务器上的odbc数据源,通过客户端程序传入sql语句获取到返回的odbc数据。...
Switch语句(春夏秋冬)//case穿透//case穿透//case穿透case后面没有break将会穿透,直到遇到break或者整体switch结束。package class1;// 12个月 输入一个月,判断春夏秋冬import java.util.Scanner;public class thirty_eight {public static void main(String[] args) { // TODO Auto-generated method stub Scan
前言:IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,可以这么说,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开发效率。达到事半功倍的效果最经常使用的十几个快捷键:...
x64 结构提供了 16 个通用寄存器(以后称为整数寄存器),以及 16 个可供浮点使用的 XMM 寄存器。易失寄存器是由调用方假想的临时寄存器,并要在调用过程中销毁。非易失寄存器需要在整个函数调用过程中保留其值,并且一旦使用,则必须由被调用方保存。下表说明了每种寄存器在整个函数调用过程中的使用方法:Register状态请使用RAX易失的返回
对于带分隔符的文本文件,可以在“文本导入向导”的步骤 2 中将分隔符从制表符更改为其他字符。在步骤 2 中,还可以更改处理连续分隔符(如连续引号)的方式。 有关使用“文本导入向导”的详细信息,请参阅文本导入向导。 更改所有 .csv 文本文件中的分隔符 1、单击 Windows“开始”菜单。 2、单击“控制面板”。 3、打开“区域和语言选项”对话框。
在进行城市网络研究时,通常需要借鉴社会网络的分析方式,对网络各类指标进行计算。主要使用软件为Ucinet 6,在网上可以下载到QQ截图20200814160054.jpg1、数据准备类似于之前讲过的武汉城市圈高德迁徙数据,这里用的是上海都市圈2019年高德迁徙数据,根据前所述方法,在数据库中选取其中的工作日数据并计算日均值。注:高德迁徙数据获取方式目前不便于公开,请勿私信询问。此处上海都市圈范围为...
江苏的小高考不过,是不是没有大学上?有的话会是什么大学呢? ...... 小高考不过 高中毕业证都没有哇 所以要努力啊 实在不行的话 高三的时候还可以再考一次 就是跟下届高二的一起考江苏小高考没过,可以参加高考,但能填报志愿吗,能报什么学校,对高考影响大吗? - ...... 可以参加高考,但填志愿无效.根据江苏省教育网上信息:【必修科目和选修科目缺考或未报考的考生,不能取得相应科目的成...
sts添加jdk及设置