【问题标题】:How to get the Path of current selected file in Eclipse?如何在 Eclipse 中获取当前选定文件的路径?
【发布时间】:2011-05-31 05:29:37
【问题描述】:

我想在 Eclipse 工作区中获取当前选定文件的路径,但是我的项目是一个简单的视图插件项目。

我只想在用户打开视图时显示所选文件的名称/路径。

【问题讨论】:

    标签: eclipse eclipse-plugin


    【解决方案1】:

    您会得到@Danail Nachev 提到的当前选择。有关使用选择服务的信息,请参阅http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html

    一旦你有了选择,最常见的模式是:

        if (selection instanceof IStructuredSelection) {
            IStructuredSelection ssel = (IStructuredSelection) selection;
            Object obj = ssel.getFirstElement();
            IFile file = (IFile) Platform.getAdapterManager().getAdapter(obj,
                    IFile.class);
            if (file == null) {
                if (obj instanceof IAdaptable) {
                    file = (IFile) ((IAdaptable) obj).getAdapter(IFile.class);
                }
            }
            if (file != null) {
                // do something
            }
        }
    

    编辑:

    通常你会从IFile 得到一个InputStream 并以这种方式处理它。使用某些 FileSystemProviders 或 EFS 实现,可能没有文件的本地路径。

    私服

    【讨论】:

    • 我得到的输出是 L/rcp/MyXML.xml。如何避免这个 L 并添加文件的原始/绝对路径。
    • 读取 IFile 和 IResource 的 API。它具有获取绝对文件系统路径的方法。
    • 这些是可怕的间接答案...请参阅此处以获取直接答案:stackoverflow.com/questions/17900124/…
    【解决方案2】:

    您可以使用以下代码检索当前工作台选择使用两种方法

    罢工>

    1. 通过工作台SelectionService
    2. getViewSite().getSelectionProvider().getSelection()

    getViewSite().getWorkbenchWindow().getSelectionService()

    您可以在this article找到更多信息。

    使用全局工作台选择是更好的方法,因为它使您的视图可以从任何地方获得选择,这是用户可能期望的(我至少这样做)。此外,Eclipse 中的几乎所有视图(我不知道这条规则的例外情况)都在使用这种方法。

    如果您绝对必须将您的视图绑定到另一个视图,那么您可以获取所有 IWorkbenchPage 迭代它们并通过其 ID 搜索视图,当您找到该视图时,您调用 get 它的 SelectionProvider 来获取选择。

    只有阅读这个解释,才能让我的头发直起来。考虑到同一视图可能有多个实例,您最终可能会从随机视图中进行选择。我不确定用户是否会理解事物的工作方式,除非您有一些明确的规则,这些规则正是您需要的。这取决于你。

    `

    【讨论】:

    • 但问题是——如何获取所选文件的路径(大概是从Project explorer 视图,OP 没有指定)?
    • @Sandman - 我已经更新了答案,因为它并不完全正确。关于所选文件的路径,可以使用以下方法IResource.getLocation()、IPath.toOSString()、IPath.toFile()。正如@Paul Webster 所提到的,这些方法应该提供一个起点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多