如何以编程方式将文件夹从插件复制到工作区中的新项目?

时间:2012-01-09 17:06:03

标签: eclipse eclipse-plugin eclipse-rcp

我正在开发一个Eclipse插件,创建一个新的Project Wizard。在工作区中创建这样的新项目时,我需要它将文件夹及其后代从插件复制到工作区中刚创建的项目。问题是,当项目是IResource时,插件文件夹位于文件系统中。

我成功获取了我需要复制的源插件文件夹的URL,并且我有IProject参考。

我需要知道的是:如何将前者复制到后者中?

2 个答案:

答案 0 :(得分:5)

查看this answer以了解如何获取文件/文件夹"以及#34;一个插件。

然后在项目中创建新文件/文件夹,并使用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);
        }
    }
}

答案 1 :(得分:0)

如果不确切知道文件(不能迭代孩子们),这是不可能的。不要使用包含文件和子文件夹的文件夹,而是创建一个具有该结构的zip并在工作区中解压缩zip(这应该保留所需的结构)。