2016-12-16 4 views
2

Я разрабатываю плагин Eclipse, в котором я пытаюсь получить вход от пользователя через Мастер.
После нажатия кнопки завершения в мастере, я создаю проект в рабочей области, используя интерфейсы IWorkspace, IProject и т. Д.Скопируйте существующую папку во вновь созданный проект в рабочую область Eclipse

Я хочу скопировать существующую папку (которая может дополнительно содержать подпапки и файлы) во вновь созданный проект и показать это в рабочей области. Папка не является проектом Eclipse.

Есть ли способ сделать это?

ответ

2

Например:

IProject project = ... 
IPath location = project.getLocation(); 
Files.copy(pathToExistingFolder, location.toFile().toPath()); 
project.refreshLocal(IResource.DEPTH_INFINITE, null); 

Более соответствующее решение будет проходить через существующую папку и создать копию каждого файла и папки найденных в нем.

Чтобы создать новый файл, используйте

IProject project = ... 
IFile file = project.getFile("path/relative/to/prooject"); 
file.create(inputStream, IResource.NONE, null); 
// or, to override and existing file (file.eists() == true): 
file.setContents(inputStream, IResource.NONE, null); 

The inputStream предполагается подкрепляться в настоящее время проходимого файл из существующей папки файлов.

Чтобы создать новую папку, используйте

IProject project = ... 
IFolder folder = project.getFolder("path/relative/to/prooject"); 
folder.create(IResource.NONE, true, null); 

Я также предположить, что существующие файлы будут в конечном счете, в конечном итоге будет храниться в (Jared) плагин. В этом случае последний подход является единственно жизнеспособным, поскольку он позволяет вам создавать структуру папок и содержимое файлов из хранилища подключаемых модулей.

Plugin Development Environment (PDE) обеспечивает точки расширения и API до manage and execute templates during project-creation. Хотя вы, конечно, не хотите зависеть от подключаемых модулей от PDE, вам может понадобиться ознакомиться с источниками: https://github.com/eclipse/eclipse.pde.ui/tree/master/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates

+0

Привет. Спасибо за ответ. Есть ли проблема в реализации быстрого и грязного пути? Кроме того, Files.copy (pathToExistingFolder, location.toFile(). ToPath()); выдает ошибку: «Копировать метод (Path, OutputStream) в тип« Файлы »не применимо для аргументов (Path, Path)» – tejas

+0

@tejas Убедитесь, что вы используете правильный 'Path' - это должно быть' java.nio .file.Path' не 'org.eclipse.core.runtime.Path'. –

+0

@tejas Предпочтительным способом доступа к файлам, управляемым рабочей областью, является API ресурсов. Таким образом, вы избежите возможных промежуточных сбоев между копированием файлов «за спиной» рабочей области и обновлением состояния рабочей области. –

Смежные вопросы