我正在开发一个Eclipse插件,创建一个新的Project Wizard。在工作区中创建这样的新项目时,我需要它将文件夹及其后代从插件复制到工作区中刚创建的项目。问题是,当项目是IResource
时,插件文件夹位于文件系统中。
我成功获取了我需要复制的源插件文件夹的URL,并且我有IProject参考。
我需要知道的是:如何将前者复制到后者中?
答案 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(这应该保留所需的结构)。