Eclipse plugin 使用资源增量对象,标识文件删除或文件创建

Eclipse plugin 使用资源增量对象,标识文件删除或文件创建,eclipse-plugin,Eclipse Plugin,我正在使用资源更改侦听器跟踪对项目所做的更改。如果我在项目中删除、创建或保存对文件的任何更改,就会调用此侦听器。我有ResourceDelta对象。这样,我如何才能找到文件是正在创建还是将要删除。 下面是我的代码: 在插件的activator类中,我有: IResourceChangeListener listener = new MyResourceChangeListener(); this.workspace.addResourceChangeListener(this.li

我正在使用资源更改侦听器跟踪对项目所做的更改。如果我在项目中删除、创建或保存对文件的任何更改,就会调用此侦听器。我有ResourceDelta对象。这样,我如何才能找到文件是正在创建还是将要删除。 下面是我的代码:

在插件的activator类中,我有:

IResourceChangeListener     listener    = new MyResourceChangeListener();
this.workspace.addResourceChangeListener(this.listener);
在MyResourceChangeListener类中,我有:

System.out.println(event.getBuildKind());
System.out.println(event.getSource());
System.out.println(event.getType());
if (event.getType() == IResourceChangeEvent.POST_CHANGE) {
    System.out.println("this is post change event");
    final IResourceDelta delta = event.getDelta();

System.out.println(delta.getFlags());
System.out.println(delta.getKind());
System.out.println(delta.getFlags());

if (delta.getKind() == IResourceDelta.ADDED) {
    System.out.println("this is ADD event");
}

if (delta.getKind() == IResourceDelta.CHANGED) {
    System.out.println("this is CHANGED event");
}

if ((delta.getFlags() & IResourceDelta.CONTENT) == 0) {
        System.out.println("this is CONTENT event");
}
}
输出始终如下所示,要么创建类,要么删除类,要么进行更改并保存类:

0
org.eclipse.core.internal.resources.Workspace@5f9f1f42
1
this is post change event
0
4
0
this is CHANGED event
this is CONTENT event

如何区分保存、删除或创建事件。

测试由
IResourceChangeEvent.getType()
返回的位图的删除前位。使用
IWorkspace.addResourceChangeListener(IResourceChangeListener,int)

这可能也很有用