下面列出了org.apache.commons.io.monitor.FileAlterationListenerAdaptor#org.apache.commons.io.monitor.FileAlterationMonitor 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@PostConstruct
public void init() {
File confDir = Util.getConfDirPath();
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(),
FileFilterUtils.prefixFileFilter("application"),
FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(HbaseAdapter hbaseAdapter, Properties envProperties) {
this.hbaseAdapter = hbaseAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(String key, RdbAdapter rdbAdapter, Properties envProperties) {
this.key = key;
this.rdbAdapter = rdbAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(ESAdapter esAdapter, Properties envProperties) {
this.esAdapter = esAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
// 文件变化监听采用的common io的类库
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
/**
* 扫描文件变化
* @throws Exception
*/
public void monitorFileChanged() throws Exception {
if (httpConfig.monitorFileChange) {
if (httpConfig.getPageRoot() != null) {
File directory = new File(httpConfig.getPageRoot());//需要扫描的文件夹路径
// 测试采用轮询间隔 5 秒
long interval = TimeUnit.SECONDS.toMillis(5);
FileAlterationObserver observer = new FileAlterationObserver(directory, new FileFilter() {
@Override
public boolean accept(File pathname) {
return true;
}
});
//设置文件变化监听器
observer.addListener(new FileChangeListener(this));
FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
monitor.start();
}
}
}
/**
* 只监控文件发送变化,如果是子目录的文件改变,则目录会变,由于没有过滤目录发生变化,则目录下的文件改变不会监控到
* @param dir
* @throws Exception
*/
public void check1(String dir) throws Exception
{
File directory = new File(dir);
// 轮询间隔 5 秒
long interval = TimeUnit.SECONDS.toMillis(5);
// 创建一个文件观察器用于处理文件的格式
IOFileFilter filter=FileFilterUtils.or(FileFilterUtils.suffixFileFilter(".class"),
FileFilterUtils.suffixFileFilter(".jar"));
FileAlterationObserver observer = new FileAlterationObserver(directory,filter);
//设置文件变化监听器
observer.addListener(new MyFileListener());
FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
monitor.addObserver(observer);//文件观察
monitor.start();
}
public void check2(String dir) throws Exception
{
File directory = new File(dir);
// 轮询间隔 5 秒
long interval = TimeUnit.SECONDS.toMillis(5);
//后缀过滤器
IOFileFilter filefilter=FileFilterUtils.or(FileFilterUtils.suffixFileFilter(".class"),
FileFilterUtils.suffixFileFilter(".jar"));
//子目录的后缀
IOFileFilter subFilefilter=FileFilterUtils.or(FileFilterUtils.directoryFileFilter(),filefilter);
//根目录和子目录变化
IOFileFilter filter = FileFilterUtils.or(filefilter,subFilefilter);
FileAlterationObserver observer = new FileAlterationObserver(directory,filter);
//设置文件变化监听器
observer.addListener(new MyFileListener());
FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
monitor.addObserver(observer);//文件观察
monitor.start();
// monitor.addObserver(observer);//文件观察,如果在start后面加,则会触发所有文件创建
}
public void start() {
String gamePath = Configuration.get().applicationConfiguration().get().getGamePath();
File folder = new File(gamePath + "logs");
this.fileHandler = new MessageFileHandler(gamePath + "logs/Client.txt");
FileAlterationObserver observer = new FileAlterationObserver(folder);
monitor = new FileAlterationMonitor(POLLING_INTERVAL);
FileAlterationListener listener = new FileAlterationListenerAdaptor() {
@Override
public void onFileChange(File file) {
fileHandler.parse();
}
};
observer.addListener(listener);
monitor.addObserver(observer);
try {
monitor.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void startMonitor() throws Exception {
// Start the local configuration monitors
for (Entry<String, FileAlterationMonitor> monitor : monitors.entrySet()) {
monitor.getValue().start();
log.startedMonitor(monitor.getKey());
}
// Start the remote configuration monitor, if it has been initialized
if (remoteMonitor != null) {
try {
remoteMonitor.start();
} catch (Exception e) {
log.remoteConfigurationMonitorStartFailure(remoteMonitor.getClass().getTypeName(), e.getLocalizedMessage());
}
}
// Trigger descriptor discovery (KNOX-2301)
triggerDescriptorDiscovery();
}
@PostConstruct
public void init() {
File confDir = Util.getConfDirPath();
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(),
FileFilterUtils.prefixFileFilter("application"),
FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(HbaseAdapter hbaseAdapter, Properties envProperties) {
this.hbaseAdapter = hbaseAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(String key, RdbAdapter rdbAdapter, Properties envProperties) {
this.key = key;
this.rdbAdapter = rdbAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public void init(ESAdapter esAdapter, Properties envProperties) {
this.esAdapter = esAdapter;
this.envProperties = envProperties;
this.adapterName = envProperties.getProperty("es.version");
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public DirectoryMonitor(String directorypath, long polling, String classname) {
this.directory = new File(directorypath);
this.trackedClassName = classname;
this.polling = polling;
if (!directory.isDirectory()) {
LOG.info("Monitored directory {} not existing - creating directory", directory.getAbsolutePath());
if (!this.directory.mkdirs()) {
throw new IllegalStateException("Monitored directory doesn't exist and cannot be created.");
}
}
// We observes all files.
FileAlterationObserver observer = new FileAlterationObserver(directory, TrueFileFilter.INSTANCE);
observer.checkAndNotify();
observer.addListener(new FileMonitor());
monitor = new FileAlterationMonitor(polling, observer);
}
@Override
public void initialize(Litchi litchi) {
JSONObject config = litchi.config(Constants.Component.DATA_CONFIG);
if (config == null) {
LOGGER.error("'dataConfig' node not found in litchi.json");
return;
}
String dataSourceKey = config.getString("dataSource");
JSONObject fileConfig = config.getJSONObject(dataSourceKey);
if (fileConfig == null || fileConfig.isEmpty()) {
LOGGER.error("'dataConfig' node is null. check litchi.json please.");
return;
}
this.filePath = FileUtils.combine(litchi.getRootConfigPath(), fileConfig.getString("filePath"));
this.reloadFlushTime = fileConfig.getInteger("reloadFlushTime");
this.litchi = litchi;
this.fileDir = new File(this.filePath);
if (!this.fileDir.isDirectory()) {
LOGGER.error("current data config path is not directory: path:{}", this.filePath);
return;
}
try {
reloadMonitor = new FileAlterationMonitor(this.reloadFlushTime, createFileObserver());
reloadMonitor.start();
LOGGER.info("local data config flush monitor is start!");
LOGGER.info("path:{}, flushTime:{}ms", this.filePath, this.reloadFlushTime);
} catch (Exception ex) {
LOGGER.error("{}", ex);
}
}
public DefaultWatchService(long watchIntervalInMs) throws Exception {
this.watches = new ConcurrentHashMap<>();
this.monitor = new FileAlterationMonitor(watchIntervalInMs);
this.monitor.setThreadFactory(new Factory());
this.monitor.start();
}
public IncrementalBuilder(Set<Path> inclDirs,
List<Callable<Void>> chain,
Log logger, long watchTimeInterval) {
this.chain = chain;
this.logger = logger;
this.monitor = new FileAlterationMonitor(watchTimeInterval);
inclDirs.forEach(this::buildObserver);
}
protected void init() throws Exception
{
FileAlterationObserver observer=buildFileAlterationObserver(scriptDir);
observer.addListener(new FileListener());
FileAlterationMonitor monitor=new FileAlterationMonitor(updateInterval);
monitor.addObserver(observer);
monitor.start();
scanResources();
}
TorrentFileWatcher(final FileAlterationListener listener, final Path monitoredFolder, final Integer interval) {
Preconditions.checkNotNull(listener, "listener cannot be null");
Preconditions.checkNotNull(monitoredFolder, "monitoredFolder cannot be null");
Preconditions.checkArgument(Files.exists(monitoredFolder), "Folder '" + monitoredFolder.toAbsolutePath() + "' does not exists.");
Preconditions.checkNotNull(interval, "interval cannot be null");
Preconditions.checkArgument(interval > 0, "interval cannot be less than 1");
this.listener = listener;
this.monitoredFolder = monitoredFolder.toFile();
this.monitor = new FileAlterationMonitor(interval);
this.monitor.setThreadFactory(new ThreadFactoryBuilder().setNameFormat("torrent-file-watcher-%d").build());
this.observer = new FileAlterationObserver(this.monitoredFolder, TORRENT_FILE_FILTER);
this.observer.addListener(this.listener);
monitor.addObserver(this.observer);
}
public IncrementalBuilder(Set<Path> inclDirs,
List<Callable<Void>> chain,
Log logger, long watchTimeInterval) {
this.chain = chain;
this.logger = logger;
this.monitor = new FileAlterationMonitor(watchTimeInterval);
inclDirs.forEach(this::buildObserver);
}
public void monitor(String directory, int interval) {
FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(directory, FileFilterUtils.and(FileFilterUtils.nameFileFilter(SENSITIVE_WORD_FILE_NAME)), null);
fileAlterationObserver.addListener(this);
FileAlterationMonitor fileAlterationMonitor = new FileAlterationMonitor(interval, fileAlterationObserver);
try {
fileAlterationMonitor.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@VisibleForTesting
FileModificationPollingMonitor(@NonNull Path fileToWatch, @NonNull Consumer<File> callback, int pollingInterval,
boolean checkForFileExistence) throws FileNotFoundException {
Exceptions.checkNotNullOrEmpty(fileToWatch.toString(), "fileToWatch");
if (checkForFileExistence && !fileToWatch.toFile().exists()) {
throw new FileNotFoundException(String.format("File [%s] does not exist.", fileToWatch));
}
this.pathOfFileToWatch = fileToWatch;
this.callback = callback;
this.pollingInterval = pollingInterval;
monitor = new FileAlterationMonitor(this.pollingInterval);
}
@Override
public void stopMonitor() throws Exception {
// Stop the local configuration monitors
for (Entry<String, FileAlterationMonitor> monitor : monitors.entrySet()) {
monitor.getValue().stop();
log.stoppedMonitor(monitor.getKey());
}
// Stop the remote configuration monitor, if it has been initialized
if (remoteMonitor != null) {
remoteMonitor.stop();
}
}
/**
* Constructor.
* @param manager the templating manager, to which event handling is delegated.
* @param templateDir the templates directory to watch.
* @param pollInterval the poll interval.
* @throws IOException if there is a problem watching the template directory.
*/
public TemplateWatcher( final TemplatingManager manager, final File templateDir, final long pollInterval ) {
this.templateDir = templateDir;
// Register the custom helpers.
this.handlebars.registerHelper( AllHelper.NAME, new AllHelper());
this.handlebars.registerHelper( IsKeyHelper.NAME, new IsKeyHelper());
// Pretty formatting
this.handlebars.prettyPrint( true );
// Create the observer, register this object as the event listener.
FileFilter fileFilter = FileFilterUtils.or(
FileFilterUtils.and(
FileFilterUtils.fileFileFilter(),
FileFilterUtils.suffixFileFilter( ".tpl" ),
CanReadFileFilter.CAN_READ,
new TemplateFileFilter(templateDir)),
FileFilterUtils.and(
FileFilterUtils.directoryFileFilter(),
CanReadFileFilter.CAN_READ,
new TemplateSubDirectoryFileFilter(templateDir))
);
FileAlterationObserver observer = new FileAlterationObserver( this.templateDir, fileFilter );
observer.addListener( this );
// Create the monitor.
this.monitor = new FileAlterationMonitor( pollInterval, observer );
this.monitor.setThreadFactory( THREAD_FACTORY );
this.manager = manager;
this.logger.fine( "Template watcher is watching "
+ this.templateDir
+ " with an interval of " + pollInterval + " ms." );
}
public void init(KuduAdapter kuduAdapter, Properties envProperties) {
this.kuduAdapter = kuduAdapter;
this.envProperties = envProperties;
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
fileMonitor.start();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
/**
* Starts the watching.
*
* @return the current pipeline.
*/
public Pipeline watch() {
// Delete all error reports before starting the watcher.
error = new File(baseDir, "target/pipeline");
FileUtils.deleteQuietly(error);
mojo.getLog().debug("Creating the target/pipeline directory : " + error.mkdirs());
// Start the watching process.
watcher = new FileAlterationMonitor(Integer.getInteger("watch.period", 2) * 1000);
watcher.setThreadFactory(new DefensiveThreadFactory("wisdom-pipeline-watcher", mojo));
FileAlterationObserver srcObserver = new FileAlterationObserver(new File(baseDir, "src"),
TrueFileFilter.INSTANCE);
PipelineWatcher listener = new PipelineWatcher(this);
srcObserver.addListener(listener);
watcher.addObserver(srcObserver);
if (pomFileMonitoring) {
FileAlterationObserver pomObserver = new FileAlterationObserver(baseDir, new FileFilter() {
@Override
public boolean accept(File file) {
return file.equals(new File(baseDir, "pom.xml"));
}
});
pomObserver.addListener(listener);
watcher.addObserver(pomObserver);
}
try {
mojo.getLog().info("Start watching " + baseDir.getAbsolutePath());
watcher.start();
} catch (Exception e) {
mojo.getLog().error("Cannot start the watcher", e);
}
return this;
}
private void stopMonitor() throws MojoExecutionException {
if (monitors != null) {
for (final FileAlterationMonitor monitor : monitors) {
try {
monitor.stop();
} catch (Exception e) {
throw new MojoExecutionException(e.getMessage(), e);
}
}
}
}
@Inject
public Watcher(ObserverFactory observerFactory, FileAlterationMonitor monitor) {
this.observerFactory = observerFactory;
this.monitor = monitor;
}
@Bean
public FileAlterationMonitor monitor() {
return new FileAlterationMonitor(1000);
}
private void initListener(String monitorName, FileAlterationMonitor monitor, File directory, FileFilter filter, FileAlterationListener listener) {
monitors.put(monitorName, monitor);
FileAlterationObserver observer = new FileAlterationObserver(directory, filter);
observer.addListener(listener);
monitor.addObserver(observer);
}