Java Intellij IDEA插件如何获取当前打开文件的路径?

Java Intellij IDEA插件如何获取当前打开文件的路径?,java,intellij-idea,intellij-plugin,Java,Intellij Idea,Intellij Plugin,我已经试过: Document currentDoc = FileEditorManager.getInstance(project).getSelectedTextEditor().getDocument() VirtualFile currentFile = FileDocumentManager.getInstance().getFile(currentDoc); String fileName = currentFile.getPath();` 但这只会获取文件名。发生这种情况可能是因

我已经试过:

Document currentDoc = FileEditorManager.getInstance(project).getSelectedTextEditor().getDocument()
VirtualFile currentFile = FileDocumentManager.getInstance().getFile(currentDoc);
String fileName = currentFile.getPath();`

但这只会获取文件名。

发生这种情况可能是因为您收到的LightVirtualFile不在内存中。试试这个:

PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(currentDoc);
VirtualFile vFile = psiFile.getOriginalFile().getVirtualFile();
String path = vFile.getPath();
getOriginalFile返回表示物理文件的PsiFile对象,如果物理文件不在内存中,则返回null。如果您不确定文件是否确实在您的文件系统中,请首先检查getOriginalFile的结果是否为null


请参阅

发生这种情况的原因可能是您收到的LightVirtualFile不在内存中。试试这个:

PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(currentDoc);
VirtualFile vFile = psiFile.getOriginalFile().getVirtualFile();
String path = vFile.getPath();
getOriginalFile返回表示物理文件的PsiFile对象,如果物理文件不在内存中,则返回null。如果您不确定文件是否确实在您的文件系统中,请首先检查getOriginalFile的结果是否为null

请参阅

参见此。除非您使用的是LightVirtualFile,否则getPath应该可以正常工作。如果您使用的是LightVirtualFile,请使用PsiFilegetOriginalFile,然后在其上调用getPath。请参见此。除非您使用的是LightVirtualFile,否则getPath应该可以正常工作。如果您使用的是LightVirtualFile,请使用PsiFilegetOriginalFile,然后在该文件上调用getPath