Since 3.3 you can use the new EFS support to open an text editor on a file outside the workspace:
if (name == null)
return;
IFileStore fileStore= EFS.getLocalFileSystem().getStore(new Path(filterPath));
fileStore= fileStore.getChild(names[i]);
if (!fileStore.fetchInfo().isDirectory() && fileStore.fetchInfo().exists()) {
IWorkbenchPage page= window.getActivePage();
try {
IDE.openEditorOnFileStore(page, fileStore);
} catch (PartInitException e) {
/* some code */
}
Alternatively, you can create a linked resource in an existing project, which points to a file elsewhere in the file system. This example snippet creates a project called “External Files,” and then prompts the user to select any file in the file system. The code then creates a linked resource in the project to that external file, allowing the platform to open the file in read/write mode in one of the standard editors:
IProject project = ws.getRoot().getProject("External Files");
if (!project.exists())
project.create(null);
if (!project.isOpen())
project.open(null);
Shell shell = window.getShell();
String name = new FileDialog(shell, SWT.OPEN).open();
if (name == null)
return;
IPath location = new Path(name);
IFile file = project.getFile(location.lastSegment());
file.createLink(location, IResource.NONE, null);
IWorkbenchPage page = window.getActivePage();
if (page != null)
page.openEditor(file);