gpt4 book ai didi

eclipse - Canonical 获取事件文件代码抛出 FileNotFoundexception

转载 作者:行者123 更新时间:2023-12-02 03:37:01 28 4
gpt4 key购买 nike

许多其他答案让我想到了这个精彩的片段,它声称可以在 Eclipse 中获取当前事件的文件:

IWorkbenchPart workbenchPart = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getActivePart();
IFile file = (IFile) workbenchPart.getSite().getPage().getActiveEditor()
.getEditorInput().getAdapter(IFile.class);
if (file == null) throw new FileNotFoundException();

我完全相信它基于这些问题的结果有效,但是,它总是为我抛出 FileNotFoundException。

这怎么可能?是否有其他方法获取事件文件?

注意:org.eclipse.core.resourcesorg.eclipse.core.runtime 都在我的依赖项列表中,因此 IAdaptable 应该可以正常工作。这是另一个问题中的一个问题。

最佳答案

编辑器的输入不必支持适应IFile。输入通常会实现 IFileEditorInputIPathEditorInputIURIEditorInputILocationProvider 中的一项或多项。

如果可能,此代码将找到 IFileIPath:

/**
* Get a file from the editor input if possible.
*
* @param input The editor input
* @return The file or <code>null</code>
*/
public static IFile getFileFromEditorInput(final IEditorInput input)
{
if (input == null)
return null;

if (input instanceof IFileEditorInput)
return ((IFileEditorInput)input).getFile();

final IPath path = getPathFromEditorInput(input);
if (path == null)
return null;

return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
}


/**
* Get the file path from the editor input.
*
* @param input The editor input
* @return The path or <code>null</code>
*/
public static IPath getPathFromEditorInput(final IEditorInput input)
{
if (input instanceof ILocationProvider)
return ((ILocationProvider)input).getPath(input);

if (input instanceof IURIEditorInput)
{
final URI uri = ((IURIEditorInput)input).getURI();
if (uri != null)
{
final IPath path = URIUtil.toPath(uri);
if (path != null)
return path;
}
}

if (input instanceof IFileEditorInput)
{
final IFile file = ((IFileEditorInput)input).getFile();
if (file != null)
return file.getLocation();
}

return null;
}

关于eclipse - Canonical 获取事件文件代码抛出 FileNotFoundexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com