Plugins 如何在Intellij idea中检测文件更改?

Plugins 如何在Intellij idea中检测文件更改?,plugins,intellij-idea,Plugins,Intellij Idea,我想构建一个简单的idea插件,它将检测一种文件的更改,然后将其转换为另一种格式 目前,我使用这样的代码来执行此操作: VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() { @Override public void contentsChanged(VirtualFileEvent event) { // do something } });

我想构建一个简单的idea插件,它将检测一种文件的更改,然后将其转换为另一种格式

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

VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() {
    @Override
    public void contentsChanged(VirtualFileEvent event) {
         // do something
    }
});
它可以工作,但效率不高

我发现他说:

侦听VFS事件的最有效方法是实现BulkFileListener接口,并使用它订阅VirtualFileManager.VFS_更改主题


但是我找不到任何例子来实现它。如何做到这一点?

我想你现在已经找到了答案,但对其他人来说,似乎是这样的

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) {
        // ...
    }

    ...
}
公共类A实现ApplicationComponent,BulkFileListener{ 私有最终消息总线连接; 公共A(){ 连接=ApplicationManager.getApplication().getMessageBus().connect(); } 公共组件(){ 订阅(VirtualFileManager.VFS_CHANGES,this); } 公共无效处置组件(){ 连接断开(); }
public void before(列表)此检测每个操作,而不仅仅是保存