我想构建一个简单的构思插件,它会检测某种文件的变化,然后将它们转换为另一种格式。
目前,我使用这样的代码来执行此操作:
VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() {
@Override
public void contentsChanged(VirtualFileEvent event) {
// do something
}
});
它有效,但效率不高。
我发现this article说:
侦听VFS事件的最有效方法是实现BulkFileListener接口并将其订阅到VirtualFileManager.VFS_CHANGES主题。
但我找不到任何实例来实现它。怎么做?
答案 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) {
// ...
}
...
}