Как программно скопировать папку из плагина в новый проект в рабочей области? - PullRequest
5 голосов
/ 09 января 2012

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

Мне удалось получить URL-адрес для папки исходного плагина, которую мне нужно скопировать, и у меня есть ссылка на IProject.

Что мне нужно знать: как скопировать первое в второе?

Ответы [ 2 ]

5 голосов
/ 09 января 2012

Проверьте этот ответ , чтобы узнать, как извлечь файл / папку из плагина.

Затем создайте новые файлы / папки в проектах и ​​установите содержимое файла с помощью InputStream:

void copyFiles (File srcFolder, IContainer destFolder) {
    for (File f: srcFolder.listFiles()) {
        if (f.isDirectory()) {
            IFolder newFolder = destFolder.getFolder(new Path(f.getName()));
            newFolder.create(true, true, null);
            copyFiles(f, newFolder);
        } else {
            IFile newFile = destFolder.getFile(new Path(f.getName()));
            newFile.create(new FileInputStream(f), true, null);
        }
    }
}
0 голосов
/ 10 января 2012

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

...