2008-11-18 6 views
14

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

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

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

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

file.getFullPath().toOSString(); 

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

ответ

20

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

+0

Ссылка с сайта IResource.getRawLocation() была изменена сейчас. – 2013-11-13 13:00:32

1

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

file.getLocation().toOSString() 
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 
5

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

IResource.getLocation().toFile() 

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

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

4

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

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

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

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

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

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

File [] файлы = file.listFiles();