Get the absolute path of the currently edited file in Eclipse

后端 未结 6 603
予麋鹿
予麋鹿 2021-02-04 06:13

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.

This is what I do

相关标签:
6条回答
  • 2021-02-04 06:16
    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
    
    0 讨论(0)
  • 2021-02-04 06:23

    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);
    
    0 讨论(0)
  • 2021-02-04 06:35

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

    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.

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

    0 讨论(0)
  • 2021-02-04 06:41

    For me, this run ok.

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

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

    file list from this location:

    File[] files = file.listFiles();

    0 讨论(0)
  • 2021-02-04 06:42

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

    file.getLocation().toOSString()
    
    0 讨论(0)
  • 2021-02-04 06:43

    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.

    0 讨论(0)
提交回复
热议问题