我不确定这是否是正确的问题,因为我无法获得我在eclipse中选择的文件夹的绝对路径。
以下是我写的代码,谁能告诉我缺少什么?
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null)
{
IStructuredSelection selection = (IStructuredSelection) window.getSelectionService().getSelection();
Object firstElement = selection.getFirstElement();
if (firstElement instanceof IAdaptable)
{
IFolder folder = (IFolder)((IAdaptable)firstElement).getAdapter(IFolder.class);
IPath path = folder.getLocation();
System.out.println(path);
}
}
提前致谢!!!!
答案 0 :(得分:0)
尝试使用IPath#makeAbsolute()将path
设为绝对路径。您还可以使用IPath#toFile()将其转换为文件,然后将其设为绝对(File#getAbsolutePath())。
所以在你的样本中你可以写:
IPath path = folder.getLocation();
System.out.println("Absolute Path: "+path.makeAbsolute());
System.out.println("Absolute FilePath: "+path.toFile().getAbsolutePath());
答案 1 :(得分:0)
我想我得到了解决方案........ 在上面的代码中,当我调试它时,IFolder变为空。
尝试了不同的方式并且有效。
public void run(IAction action) {
ISelection sel=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
IFolder folder=(IFolder) extractSelection(sel);
IPath path=folder.getLocation();
System.out.println("********************Folder Path"+path);
}
public IResource extractSelection(ISelection sel) {
if (!(sel instanceof IStructuredSelection))
return null;
IStructuredSelection ss = (IStructuredSelection) sel;
Object element = ss.getFirstElement();
if (element instanceof IResource)
return (IResource) element;
if (!(element instanceof IAdaptable))
return null;
IAdaptable adaptable = (IAdaptable)element;
Object adapter = adaptable.getAdapter(IResource.class);
return (IResource) adapter;
}