我试图创建一个IntelliJ插件来迭代项目文件夹中的所有文件,并解析所有的.java文件,然后对它们进行一些更改。问题是,在阅读文档之后,我不清楚如何遍历整个项目文件夹中的文件,我想我可能会使用PSI文件,但我不确定。有谁知道或有一个想法如何实现这一目标?如何遍历IntelliJ插件项目中的所有文件?
0
A
回答
0
一种可能的方式是使用AllClassesGetter
,像这样:
Processor<PsiClass> processor = new Processor<PsiClass>() {
@Override
public boolean process(PsiClass psiClass) {
// do your actual work here
return true;
}
};
AllClassesGetter.processJavaClasses(
new PlainPrefixMatcher(""),
project,
GlobalSearchScope.projectScope(project),
processor
);
processJavaClasses()
将寻找匹配给定的范围内给定前缀类。通过使用空白前缀和GlobalSearchScope.projectScope()
,您应该能够遍历项目中声明的所有类,并在processor
中处理它们。请注意,处理器会处理PsiClass
的实例,这意味着您不必手动解析文件。要修改类,只需更改由这些PsiClass
es代表的树。
1
要迭代项目内容中的所有文件,可以使用ProjectFileIndex.SERVICE.getInstance(project).iterateContent
。
然后你可以从他们得到PSI files
(PsiManager#findFile)
,检查他们是否是Java(instanceof PsiJavaFile)并做任何你喜欢的事情。
如果您不需要PSI,你可以查看文件类型
(VirtualFile#getFileType == JavaFileType.INSTANCE)
,并通过文件(FileDocumentManager#getDocument(file)) or VFS (LoadTextUtil#loadText, VfsUtil#saveText)
进行修改。
相关问题
- 1. 如何遍历目录和子目录中的所有文件
- 2. 展望互操作:如何遍历所有项目文件夹
- 3. 如何遍历c#.net中目录中的所有文件?
- 4. 如何遍历Jekyll的_data文件夹中的所有文件?
- 5. Eclipse:如何遍历某个文件夹中的所有文件
- 6. 如何遍历目录中的文件?
- 7. 遍历Java中的所有文件
- 8. 如何使用intellij插件sdk获取项目的所有VirtualFile
- 9. 如何在提取插件的.xpi文件中的目录中遍历文件
- 10. 如何在IntelliJ Idea中搜索项目的所有文件?
- 11. 遍历所有项目中JSON对象
- 12. 如何递归遍历所有子目录并读取文件?
- 13. 在Ant中的目录中遍历所有文件名
- 14. 循环遍历R中某个目录中的所有文件
- 15. 没有循环遍历所有文件
- 16. 如何使用XPathNodeIterator遍历XML文件中的项目列表?
- 17. 循环遍历R中的文件夹中的所有文件
- 18. 使用Corona和Lua遍历目录中的所有文件
- 19. 遍历shell脚本中同一目录下的所有文件
- 20. Java不会遍历大目录中的所有文件
- 21. 遍历zip文件中的所有目录java
- 22. 遍历给定目录中的所有文件
- 23. 遍历根目录并获取其中的所有文件?
- 24. 遍历子目录中的所有媒体文件
- 25. 使用'for'循环遍历目录中的所有文件
- 26. 如何遍历除python以外的文件中的所有行?
- 27. 如何循环遍历目录中的所有文本文件C#
- 28. 如何遍历目录中的所有文件;如果它有子目录,我想遍历子目录中的文件
- 29. 如何遍历jqGrid缓存中的所有项目
- 30. 如何遍历XML文件中的所有节点
它像一个魅力工作!感谢您的帮助! –