2008-11-18 17 views
14

Chciałbym napisać wtyczkę, która robi coś z aktualnie edytowanym plikiem w Eclipse. Ale nie jestem pewien, jak poprawnie uzyskać pełną ścieżkę pliku.Uzyskaj bezwzględną ścieżkę do aktualnie edytowanego pliku w Eclipse

To co mam teraz zrobić:

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

Teraz mam obiektu iFile i mogę odzyskać to ścieżka:

file.getFullPath().toOSString(); 

Jednak to wciąż tylko daje mi ścieżkę względem przestrzeń robocza. Jak mogę uzyskać absolutną ścieżkę od tego?

Odpowiedz

20

Wygląda na to, że chcesz IResource.getRawLocation(). To zwraca wartość IPath, która również ma metodę makeAbsolute(), jeśli chcesz mieć podwójną pewność, że masz absolutną ścieżkę.

+0

Łącze z obiektu IResource.getRawLocation() zostało zmienione. –

+0

Dzięki Vikas - zaktualizował link –

1

Zazwyczaj wywołuję metodę IFile.getLocation(), która zwraca IPath, a następnie wywołuje 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

myślę polubowne rozwiązanie bardziej Java byłoby zrobić użyć następujących:

IResource.getLocation().toFile() 

ta wykorzystuje API IPath (the getLocation() część) i zwróci instancja java.io.File. Oczywiście inne odpowiedzi zapewne doprowadzą cię tam, gdzie chcesz być.

W notatce stycznej uważam, że klasa IDE (org.eclipse.ui.ide.IDE) jest użytecznym zasobem użytkowym, jeśli chodzi o redaktorów.

4

Odpowiedź który pracował dla mnie (! A ja testowałem to) był:

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

Dla mnie ta trasa ok.

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

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

lista plików z tej lokalizacji:

plik [] files = file.listFiles();

Powiązane problemy