2016-08-29 126 views
0

我試圖創建一個IntelliJ插件來迭代項目文件夾中的所有文件,並解析所有的.java文件,然後對它們進行一些更改。問題是,在閱讀文檔之後,我不清楚如何遍歷整個項目文件夾中的文件,我想我可能會使用PSI文件,但我不確定。有誰知道或有一個想法如何實現這一目標?如何遍歷IntelliJ插件項目中的所有文件?

回答

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代表的樹。

+0

它像一個魅力工作!感謝您的幫助! –

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)進行修改。

相關問題