Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically copy a folder from a plugin to a new project in the work space?

I am developing an Eclipse Plugin creating a new Project Wizard. When creating such new project in the workspace I need it to copy a folder, and its descendent, from the plugin to the just created project in the workspace. The problem is that while the project is an IResource the plugin folder is in the file system.

I succeeded in getting an URL for the source plugin folder I need to copy and I have the IProject reference.

What I need to know is: How to copy the former into the latter?

like image 962
Andrea Sindico Avatar asked Jan 09 '12 17:01

Andrea Sindico


1 Answers

Check out this answer to see how to get a file/folder "out of" a plugin.

Then create new files/folders in the projects and set file contents using 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);
        }
    }
}
like image 65
Martti Käärik Avatar answered Sep 22 '22 18:09

Martti Käärik