java - una - Obtenga la ruta absoluta del archivo editado actualmente en Eclipse
url relativa java (6)
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.
Esto es lo que hago ahora:
IFile file = (IFile) window.getActivePage().getActiveEditor.getEditorInput().
getAdapter(IFile.class);
Ahora tengo un objeto IFile y puedo recuperar su ruta:
file.getFullPath().toOSString();
Sin embargo, esto solo me proporciona la ruta relativa al espacio de trabajo. ¿Cómo puedo obtener el camino absoluto de eso?
Normalmente llamo a IFile.getLocation () que devuelve un IPath y luego llama a IPath.toOSString ().
file.getLocation().toOSString()
Creo que una solución más amigable con Java sería usar lo siguiente:
IResource.getLocation().toFile()
Esto aprovecha la API de IPath (la parte getLocation ()) 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, encuentro que la clase IDE (org.eclipse.ui.ide.IDE)
un recurso de utilidad útil cuando se trata de editores.
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
La respuesta que funcionó para mí (¡y lo probé!) Fue:
// 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);
Parece que quieres IResource.getRawLocation()
. Eso devuelve un IPath
, que también tiene un método makeAbsolute()
si quieres estar doblemente seguro de que tienes una ruta absoluta.
Para mí, esto funciona bien.
IWorkspaceRoot workSpaceRoot = ResourcesPlugin.getWorkspace (). GetRoot ();
Archivo file = workSpaceRoot.getRawLocation (). MakeAbsolute (). ToFile ();
lista de archivos desde esta ubicación:
File [] files = file.listFiles ();