17

我想编写一个插件来处理 Eclipse 中当前编辑的文件。但我不确定如何正确获取文件的完整路径。

这就是我现在所做的:

IFile file = (IFile) window.getActivePage().getActiveEditor.getEditorInput().
    getAdapter(IFile.class);

现在我有一个 IFile 对象,我可以检索它的路径:

file.getFullPath().toOSString();

然而,这仍然只给了我相对于工作空间的路径。我怎样才能从中获得绝对路径?

4

6 回答 6

22

看起来像你想要IResource.getRawLocation()的。这将返回一个,如果你想加倍确定你有一个绝对路径IPath,它也有一个方法。makeAbsolute()

于 2008-11-18T18:15:50.030 回答
6

我认为对 Java 更友好的解决方案是使用以下内容:

IResource.getLocation().toFile()

这利用了 IPath API(getLocation() 部分)并将返回一个 java.io.File 实例。当然,其他答案可能也会让你到达你想去的地方。

顺便说一句,(org.eclipse.ui.ide.IDE)当涉及到编辑器时,我发现 IDE 类是一个有用的实用资源。

于 2009-09-02T23:50:20.520 回答
5

对我有用的答案(我测试了它!)是:

// Get the currently selected file from the editor
IWorkbenchPart workbenchPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); 
IFile file = (IFile) workbenchPart.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class);
if (file == null) throw new FileNotFoundException();
String path = file.getRawLocation().toOSString();
System.out.println("path: " + path);
于 2012-02-15T19:08:25.707 回答
1

我通常调用返回 IPath 的 IFile.getLocation(),然后调用 IPath.toOSString()。

file.getLocation().toOSString()
于 2008-11-19T17:23:37.297 回答
0
IWorkspace ws      = ResourcesPlugin.getWorkspace();  
IProject   project = ws.getRoot().getProject("*project_name*");

IPath location = new Path(editor.getTitleToolTip());  
IFile file     = project.getFile(location.lastSegment());

into file.getLocationURI() it's the absolute path
于 2008-12-08T14:22:35.580 回答
-2

对我来说,这个运行还可以。

IWorkspaceRoot workSpaceRoot = ResourcesPlugin.getWorkspace().getRoot();

文件文件 = workSpaceRoot.getRawLocation().makeAbsolute().toFile();

此位置的文件列表:

文件[] 文件 = file.listFiles();

于 2014-04-02T20:32:56.853 回答