views:

1795

answers:

4

I'd like to write a plugin that does something with the currently edited file in Eclipse. But I'm not sure how to properly get the file's full path.

This is what I do now:

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

Now I have an IFile object, and I can retrieve it's path:

file.getFullPath().toOSString();

However this still only gives me the path relative to the workspace. How can I get the absolute path from that?

+3  A: 

Looks like you want IResource.getRawLocation(). That returns an IPath, which also has a makeAbsolute() method if you want to be doubly sure you've got an absolute path.

Chris Marasti-Georg
A: 

I usually call IFile.getLocation() which returns an IPath and then call IPath.toOSString().

file.getLocation().toOSString()
Todd Wallentine
A: 

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

+1  A: 

I think a more Java friendly solution would be to do use the following:

IResource.getLocation().toFile()

This takes advantage of the IPath api (the getLocation() part) and will return a java.io.File instance. Of course the other answers will probably get you to where you want to be too.

On a tangential note, I find the IDE class (org.eclipse.ui.ide.IDE) a useful utility resource when it comes to editors.

James E. Ervin