2017-12-11 11 views
0

Intellij 확장 프로그램을 작성 중이므로 특정 가상 파일의 클래스 파일 위치를 알아야합니다. 나는 GUI의 클래스 파일의 내용을 표시 할 분석 기능 내부Intellij Idea Plugin이 가상 파일의 클래스 파일을 가져옵니다.

public void actionPerformed(AnActionEvent e) { 
    if (e.getProject() == null) return; 
    FileEditorManager manager = FileEditorManager.getInstance(e.getProject()); 
    VirtualFile files[] = manager.getSelectedFiles(); 
    //Any files open? 
    if (files.length == 0 || !files[0].getPath().toLowerCase().endsWith(".java")) 
     return; 
    analyse(files[0]); 
} 

: 나는 가상 파일을 다음과 같은 방법을로드하고 있습니다.

주어진 java-file 또는 psi-tree에서 클래스 파일을받을 수 있습니까?

+0

해당 .java 파일에 대해 컴파일 된 .class 파일을 표시하겠습니까? –

+0

예. 정확히 알고 싶은 것이 있습니다. – osanger

답변

1

FilenameIndex.getFilesByName() 메서드를 사용하여 .class 파일을 가져올 수 있습니다. .java 파일의 이름을 알고 있기 때문에이를 사용하여 .class 파일 이름을 파생시킬 수 있습니다.

하지만 .class 파일이 대상 디렉토리에 있고 IDEA가 해당 디렉토리를 색인하지 않기 때문에 작동하지 않을 것이라고 생각합니다. VfsUtil.collectChildrenRecursively() 메서드를 사용하여 대상 디렉토리의 모든 파일을 가져온 다음 나중에 필요한 .class 파일을 필터링 할 수 있습니다.