我有一个自定义编辑器。当编辑器中当前打开的文件在编辑器外部更改时,我想执行一些操作。 我从编辑器中保存时却做了同样的动作,但不知道如何从编辑器外部实现它。
答案 0 :(得分:0)
使用IResourceChangeListener
在编辑器中侦听资源更改。
使用以下命令设置监听器:
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
并在编辑器dispose()
中将其删除:
ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);
在听众中你可以这样做:
@Override
public void resourceChanged(final IResourceChangeEvent event)
{
IResourceDelta eventDelta = event.getDelta();
IResourceDelta trackDelta = eventDelta.findMember(IFile you want to check);
if (trackDelta != null)
{
if ((trackDelta.getKind() & IResourceDelta.CHANGED) != 0 &&
(trackDelta.getFlags() & IResourceDelta.CONTENT) != 0)
{
// TODO file contents have changed - add your processing
}
}
}
注意:这仅适用于Eclipse工作区中更改的文件。
您可以使用java.nio.file.WatchService
跟踪Eclipse工作区外的文件。