美文网首页
(二十)IntelliJ 插件开发—— Virtual File

(二十)IntelliJ 插件开发—— Virtual File

作者: 秋水畏寒 | 来源:发表于2020-03-17 15:08 被阅读0次

官方文档

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 FilesVFS中的一种代表性文件类型,大多数情况下,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的工程

相关文章

网友评论

      本文标题:(二十)IntelliJ 插件开发—— Virtual File

      本文链接:https://www.haomeiwen.com/subject/zjlcdhtx.html