2008-11-18 21 views
14

Me gustaría escribir un complemento que haga algo con el archivo editado actualmente en Eclipse. Pero no estoy seguro de cómo obtener correctamente la ruta completa del archivo.Obtenga la ruta absoluta del archivo editado actualmente en Eclipse

Esto es lo que hago ahora:

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

Ahora tengo un objeto IFile, y puede recuperar su trayectoria:

file.getFullPath().toOSString(); 

Sin embargo, esto sigue siendo sólo me da la ruta relativa a la espacio de trabajo ¿Cómo puedo obtener el camino absoluto de eso?

Respuesta

20

Parece que quiere IResource.getRawLocation(). Eso devuelve un IPath, que también tiene un método makeAbsolute() si quiere estar doblemente seguro de que tiene una ruta absoluta.

+0

El enlace de IResource.getRawLocation() se ha cambiado ahora. –

+0

Gracias Vikas - actualizó el enlace –

1

Normalmente llamo a IFile.getLocation() que devuelve un IPath y luego llama a IPath.toOSString().

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

creo que una solución más amigable Java sería hacer uso de lo siguiente:

IResource.getLocation().toFile() 

Esto se aprovecha de la API iPath (el getLocation() parte) y devolverá una instancia de java.io.File Por supuesto, las otras respuestas probablemente te llevarán a donde quieres estar también.

En una nota tangencial, la clase IDE (org.eclipse.ui.ide.IDE) es un recurso de utilidad útil cuando se trata de editores.

4

La respuesta que trabajó para mí (¡y lo probé) era:

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

Para mí, esta carrera bien.

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

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

lista de archivos desde esta ubicación:

archivo [] = file.listFiles archivos();

Cuestiones relacionadas