2008-11-18 3 views
14

Ich möchte ein Plugin schreiben, das etwas mit der aktuell bearbeiteten Datei in Eclipse macht. Aber ich bin nicht sicher, wie man den vollständigen Weg der Akte richtig holt.Erhalte den absoluten Pfad der aktuell bearbeiteten Datei in Eclipse

Dies ist, was ich jetzt tun:

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

Jetzt habe ich ein IFile Objekt, und ich kann es abrufen Pfad:

file.getFullPath().toOSString(); 

dies jedoch nur noch den Weg in Bezug auf das gibt mir Arbeitsplatz. Wie kann ich daraus den absoluten Weg ableiten?

Antwort

20

Sieht aus wie Sie wollen IResource.getRawLocation(). Das gibt eine IPath zurück, die auch eine makeAbsolute() Methode hat, wenn Sie doppelt sicher sein wollen, dass Sie einen absoluten Pfad haben.

+0

Der Link von IResource.getRawLocation() wurde jetzt geändert. –

+0

Danke Vikas - den Link aktualisiert –

1

Ich rufe normalerweise IFile.getLocation(), die einen IPath zurückgibt und dann IPath.toOSString() aufrufen.

file.getLocation().toOSString() 
0
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 
5

Ich denke, eine Java-freundliche Lösung wäre, die Folgendes zu tun verwenden:

IResource.getLocation().toFile() 

Dies nutzt die IPath API (die getLocation() Teil) und eine Rück java.io.File-Instanz. Natürlich werden die anderen Antworten dich dahin bringen, wo du auch sein willst.

Auf eine tangentiale Note finde ich die IDE-Klasse (org.eclipse.ui.ide.IDE) eine nützliche Dienstprogramm Ressource, wenn es um Editoren geht.

4

Die Antwort, die für mich gearbeitet (! Und ich getestet es) war:

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

Für mich ist diese Sicht ok.

IWorkspaceRoot workSpaceRoot = RessourcenPlugin.getWorkspace(). GetRoot();

Datei file = workSpaceRoot.getRawLocation(). MakeAbsolute(). ToFile();

Dateiliste von diesem Ort:

Datei [] files = file.listFiles();