Получить абсолютный путь к редактируемому файлу в Eclipse

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

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

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

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

file.getFullPath().toOSString();

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

Ответы

Ответ 1

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

Ответ 2

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

IResource.getLocation().toFile()

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

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

Ответ 3

Ответ, который работал у меня (и я его протестировал!), был:

// 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);

Ответ 4

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

file.getLocation().toOSString()

Ответ 5

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 the absolute path

Ответ 6

Для меня этот запуск выполняется нормально.

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

Файл file = workSpaceRoot.getRawLocation(). makeAbsolute(). toFile();

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

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