Получить абсолютный путь к редактируемому в настоящее время файлу в Eclipse - PullRequest
14 голосов
/ 18 ноября 2008

Я хотел бы написать плагин, который будет что-то делать с редактируемым файлом в Eclipse. Но я не уверен, как правильно получить полный путь к файлу.

Вот что я делаю сейчас:

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

Теперь у меня есть объект IFile, и я могу получить его путь:

file.getFullPath().toOSString();

Однако это все еще только дает мне путь относительно рабочей области. Как я могу получить абсолютный путь от этого?

Ответы [ 6 ]

20 голосов
/ 18 ноября 2008

Похоже, что вы хотите IResource.getRawLocation(). Это возвращает IPath, который также имеет метод makeAbsolute(), если вы хотите быть вдвойне уверены, что у вас есть абсолютный путь.

5 голосов
/ 03 сентября 2009

Я думаю, что более дружественным к Java решением было бы использовать следующее:

IResource.getLocation().toFile()

Это использует API-интерфейс IPath (часть getLocation ()) и возвращает экземпляр java.io.File. Конечно, другие ответы, вероятно, приведут вас туда, где вы хотите быть.

На касательной ноте я нахожу класс IDE (org.eclipse.ui.ide.IDE) полезным ресурсом для редакторов.

4 голосов
/ 15 февраля 2012

Ответ, который работал для меня (и я проверял это!), Был:

// 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);
1 голос
/ 19 ноября 2008

Я обычно вызываю IFile.getLocation (), которая возвращает IPath, а затем вызываю IPath.toOSString ().

file.getLocation().toOSString()
0 голосов
/ 03 апреля 2014

Для меня это нормально.

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

Файл file = workSpaceRoot.getRawLocation (). MakeAbsolute (). ToFile ();

список файлов из этого местоположения:

Файл [] files = file.listFiles ();

0 голосов
/ 08 декабря 2008
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
...