官方文档
https://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/virtual_file.html
Github
https://github.com/kungyutucheng/my_gradle_plugin
运行环境
macOS 10.14.5
IntelliJ idea 2019.2.4
定义
Virtual Files是VFS中的一种代表性文件类型,大多数情况下,Virtual File就是本地系统的一个文件
获取方法
- 
e.getData(PlatformDataKeys.VIRTUAL_FILE),如果是多选,使用e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY)
- LocalFileSystem.getInstance().findFileByIoFile()
- 
psiFile.getVirtualFile(),如果PSI FILE仅存在内存中,则返回空
- FileDocumentManager.getInstance().getFile()
允许操作
典型的文件操作,比如浏览文件系统、获取文件内容、重命名、移动、删除等等,递归遍历需要使用以下方法来避免由于递归符号引用导致的死循环:
VfsUtilCore.iterateChildrenRecursively
刷新操作
VirtualFileManager.getInstance().refresh()
或者
VirtualFile.refresh()
更新通知机制
Virtual File刷新的时候可以通过以下方法监听到:
project.getMessageBus().connect().subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener() {
    @Override
    public void after(@NotNull List<? extends VFileEvent> events) {
        // handle the events
    }
});
分析和操作工具
- VfsUtil
- VfsUtilCore
- 
ProjectLocator:可以用来获取包含给定的Virtual File的工程













网友评论