1

プロジェクトに加えられた変更を追跡するために Resource Change Listener を使用しています。このリスナーは、プロジェクト内のファイルを削除、作成、または変更を保存すると呼び出されます。ResourceDelta オブジェクトがあります。これにより、ファイルが作成されているか、削除されるかをどのように確認できますか。以下は私のコードです:

私のプラグインのアクティベータークラスには次のものがあります。

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

イベントの保存、削除、または作成を区別するにはどうすればよいですか。

4

1 に答える 1

2

IResourceChangeEvent.getType()PRE_DELETE ビットに対して返されたビットマップをテストします。そのイベントタイプ専用のリスナーを登録しますIWorkspace.addResourceChangeListener(IResourceChangeListener, int)

こちらの記事も参考になるかもしれません。

于 2013-07-14T18:31:19.797 に答える