2011-07-04 69 views
4

我想構建一個簡單的想法插件,它將檢測一種文件的變化,然後將它們轉換爲另一種格式。如何檢測Intellij-idea中的文件更改?

目前,我用這樣的代碼來做到這一點:

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

它的工作原理,但效率不高。

我發現this article說:

聽VFS事件的最有效的方法是實現BulkFileListener接口,並用它來訂閱VirtualFileManager.VFS_CHANGES話題。

但我找不到任何示例來實現它。怎麼做?

回答

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

    ... 
} 
+0

這對於檢測的每一個動作,不僅節省工作 –