Как программно скопировать папку из плагина в новый проект в рабочей области?
Я разрабатываю плагин 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-файл в вашем рабочем пространстве (это должно сохранить желаемую структуру).