的javadoc StandardWatchEventKinds.ENTRY_MODIFY
说:
目录条目已修改。当为此事件注册目录时,如果观察到目录中的条目已被修改,则WatchKey将排队。此事件的事件计数为1或更大。
通过编辑器编辑文件的内容时,它将同时修改日期(或其他元数据)和内容。因此ENTRY_MODIFY
,您将获得两个事件,但每个事件都将具有count
1(至少是我所看到的)。
我正在尝试监视使用以下代码手动更新(即通过命令行)的配置文件(servers.cfg
先前已向进行注册WatchService
)vi
:
while(true) {
watchKey = watchService.take(); // blocks
for (WatchEvent<?> event : watchKey.pollEvents()) {
WatchEvent<Path> watchEvent = (WatchEvent<Path>) event;
WatchEvent.Kind<Path> kind = watchEvent.kind();
System.out.println(watchEvent.context() + ", count: "+ watchEvent.count() + ", event: "+ watchEvent.kind());
// prints (loop on the while twice)
// servers.cfg, count: 1, event: ENTRY_MODIFY
// servers.cfg, count: 1, event: ENTRY_MODIFY
switch(kind.name()) {
case "ENTRY_MODIFY":
handleModify(watchEvent.context()); // reload configuration class
break;
case "ENTRY_DELETE":
handleDelete(watchEvent.context()); // do something else
break;
}
}
watchKey.reset();
}
由于您收到了两个ENTRY_MODIFY
事件,因此上述步骤将在仅需要一次时重新加载配置两次。假设可能发生不止一种这样的事件,是否有任何方法可以忽略其中的一种?
如果WatchService
API具有这样的实用程序,那就更好了。(我不想检查每个事件之间的时间。我代码中的所有处理程序方法都是同步的。
如果将文件从一个目录创建(复制/粘贴)到监视目录,则会发生相同的情况。您如何将两者结合成一个事件?
我有一个类似的问题-我正在使用WatchService
API来保持目录同步,但是观察到在许多情况下,更新执行了两次。我似乎已经通过检查文件上的时间戳解决了该问题-
这似乎屏蔽了第二个复制操作。(至少在Windows 7中-我不确定它是否可以在其他操作系统中正常工作)
也许您可以使用类似的东西?从文件存储时间戳并仅在更新时间戳时重新加载吗?
显示: 目录条目已修改。当为此事件注册目录时,当观察到目录中的条目已被修改时,WatchKey将排队。此事件的事件计数为1或更大。 通过编辑器编辑文件内容时,它会同时修改日期(或其他元数据)和内容。因此,您将获得两个事件,但每个事件的值为1(至少我看到的是这样)。 我试图监视配置文件(以前注册的),手动更新(即通过命令行)以下代码: 由于您会得到两个事件,因此当只需要一次时,上述事件将重新加载配置
我有一个 Blob 存储容器,其中配置了事件网格触发器(Blob 已创建)。我正在通过数据工厂加载此 blob 存储文件,很多时候,许多文件可能会在一次尝试中出现在此 blob 中。也许我们可以举一个20个文件的例子。 好消息是我的事件网格触发器启动了,函数app被调用。然而,我发现有时对于同一个文件,事件网格触发器被触发了不止一次。 在这20个文件中,很少有文件非常大,比如300 MB,但其他文
我有两层(=锚烷),一层叠在另一层上,有一个堆叠窗格。所以这两层都填满了整个场景。问题是,只有顶层接收鼠标事件。 这就是场景的构建方式: 只有按钮B接收点击事件,但按钮A不接收。 如果我将层B设置为鼠标透明(),按钮A将接收鼠标事件。但是鼠标的透明效果也会影响所有的孩子,所以按钮B不再接收鼠标事件。 如何让按钮A和按钮B接收鼠标事件? 以下是完整的工作来源:
我是Flink CEP的新手,一直在玩弄这些模式,以便更好地理解它们。我有一个简单的“开始”的例子 Pattern match\u win=模式。开始(“第一”)。其中(new SimpleCondition(){ 我正在通过4,4,6 并行度设置为1。 StreamExecutionEnvironment env=StreamExecutionEnvironment。getExecutionEn
我的Python Azure函数配置文件()定义了一个Blob存储触发器。 当Azure功能唤醒时(即,Live Metrics中显示的服务器在一段睡眠时间后变为在线),它将处理所有现有Blob,而不管哪些Blob已经生成触发事件。 我注意到< code > azure-web jobs-hosts/blob receipts 文件夹中填充了< code>sandboxhost637nnn文件夹。
问题内容: 我正在尝试在Python中多次读取某些文件的行。 我正在使用这种基本方式: 一切正常,但是如果我想在文件仍处于打开状态的情况下每行第二次进行迭代,例如: 然后它不起作用,我需要打开,然后关闭,然后再次打开我的文件以使其正常工作。 感谢您的回答! 问题答案: 使用file.seek()跳到文件中的特定位置。但是,请考虑是否真的有必要再次浏览该文件。也许有更好的选择。