我試圖創建一個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文件中的所有節點
它像一個魅力工作!感謝您的幫助! –