如何检测Intellij-idea中的文件更改?

时间:2011-07-04 15:22:57

标签: plugins intellij-idea

我想构建一个简单的构思插件,它会检测某种文件的变化,然后将它们转换为另一种格式。

目前,我使用这样的代码来执行此操作:

VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() {
    @Override
    public void contentsChanged(VirtualFileEvent event) {
         // do something
    }
});

它有效,但效率不高。

我发现this article说:

  

侦听VFS事件的最有效方法是实现BulkFileListener接口并将其订阅到VirtualFileManager.VFS_CHANGES主题。

但我找不到任何实例来实现它。怎么做?

1 个答案:

答案 0 :(得分:7)

我想你现在已经找到了答案,但对于其他人来说,它似乎就像这样工作

public class A implements ApplicationComponent, BulkFileListener {

    private final MessageBusConnection connection;

    public A() {
        connection = ApplicationManager.getApplication().getMessageBus().connect();
    }

    public void initComponent() {
        connection.subscribe(VirtualFileManager.VFS_CHANGES, this);
    }

    public void disposeComponent() {
        connection.disconnect();
    }

    public void before(List<? extends VFileEvent> events) {
        // ...
    }

    public void after(List<? extends VFileEvent> events) {
        // ...
    }

    ...
}