Ответ 1
Похоже, вы хотите IResource.getRawLocation()
. Это возвращает IPath
, который также имеет метод makeAbsolute()
, если вы хотите быть уверенным, что у вас есть абсолютный путь.
Я хотел бы написать плагин, который что-то делает с отредактированным в данный момент файлом в Eclipse. Но я не уверен, как правильно получить полный путь к файлу.
Вот что я делаю сейчас:
IFile file = (IFile) window.getActivePage().getActiveEditor.getEditorInput().
getAdapter(IFile.class);
Теперь у меня есть объект IFile, и я могу найти его путь:
file.getFullPath().toOSString();
Однако это только дает мне путь относительно рабочей области. Как я могу получить абсолютный путь от этого?
Похоже, вы хотите IResource.getRawLocation()
. Это возвращает IPath
, который также имеет метод makeAbsolute()
, если вы хотите быть уверенным, что у вас есть абсолютный путь.
Я думаю, что более дружественное к Java решение будет состоять в следующем:
IResource.getLocation().toFile()
Это использует API IPath (часть getLocation()) и возвращает экземпляр java.io.File. Конечно, другие ответы, вероятно, приведут вас туда, где вы хотите быть слишком.
В касательной заметке, я нахожу класс IDE (org.eclipse.ui.ide.IDE)
полезным полезным ресурсом, когда дело доходит до редакторов.
Ответ, который работал у меня (и я его протестировал!), был:
// 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);
Обычно я вызываю IFile.getLocation(), который возвращает IPath, а затем вызывает IPath.toOSString().
file.getLocation().toOSString()
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
Для меня этот запуск выполняется нормально.
IWorkspaceRoot workSpaceRoot = ResourcesPlugin.getWorkspace(). getRoot();
Файл file = workSpaceRoot.getRawLocation(). makeAbsolute(). toFile();
список файлов из этого местоположения:
Файл [] files = file.listFiles();