Java 在Eclipse中获取当前编辑文件的绝对路径

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/299619/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 12:47:42  来源:igfitidea点击:

Get the absolute path of the currently edited file in Eclipse

javaeclipseeclipse-plugineclipse-api

提问by levik

I'd like to write a plugin that does something with the currently edited file in Eclipse. But I'm not sure how to properly get the file's full path.

我想编写一个插件来处理 Eclipse 中当前编辑的文件。但我不确定如何正确获取文件的完整路径。

This is what I do now:

这就是我现在所做的:

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

Now I have an IFile object, and I can retrieve it's path:

现在我有一个 IFile 对象,我可以检索它的路径:

file.getFullPath().toOSString();

However this still only gives me the path relative to the workspace. How can I get the absolute path from that?

但是,这仍然只给了我相对于工作区的路径。我怎样才能从中获得绝对路径?

采纳答案by Chris Marasti-Georg

Looks like you want IResource.getRawLocation(). That returns an IPath, which also has a makeAbsolute()method if you want to be doubly sure you've got an absolute path.

看起来你想要IResource.getRawLocation()。这将返回一个IPathmakeAbsolute()如果您想加倍确定您有一个绝对路径,它也有一个方法。

回答by Chris Marasti-Georg

I usually call IFile.getLocation() which returns an IPath and then call IPath.toOSString().

我通常调用 IFile.getLocation(),它返回一个 IPath,然后调用 IPath.toOSString()。

file.getLocation().toOSString()

回答by Chris Marasti-Georg

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

回答by James E. Ervin

I think a more Java friendly solution would be to do use the following:

我认为更 Java 友好的解决方案是使用以下内容:

IResource.getLocation().toFile()

This takes advantage of the IPath API (the getLocation() part) and will return a java.io.File instance. Of course the other answers will probably get you to where you want to be too.

这利用了 IPath API(getLocation() 部分)并将返回一个 java.io.File 实例。当然,其他答案也可能会让你到达你想去的地方。

On a tangential note, I find the IDE class (org.eclipse.ui.ide.IDE)a useful utility resource when it comes to editors.

顺便提一下,我发现 IDE 类(org.eclipse.ui.ide.IDE)对于编辑器来说是一个有用的实用程序资源。

回答by ChrisJF

The answer that worked for me (and I tested it!) was:

对我有用的答案(我测试过!)是:

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

回答by user3491194

For me, this run ok.

对我来说,这运行正常。

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

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

File file = workSpaceRoot.getRawLocation().makeAbsolute().toFile();

文件文件 = workSpaceRoot.getRawLocation().makeAbsolute().toFile();

file list from this location:

此位置的文件列表:

File[] files = file.listFiles();

File[] 文件 = file.listFiles();