Как программно скопировать папку из плагина в новый проект в рабочей области?

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

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

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

2 ответа

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

Затем создайте новые файлы / папки в проектах и ​​установите содержимое файла, используя 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);
        }
    }
}

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

Другие вопросы по тегам