我正在开发一个Eclipse插件,其中我试图通过向导从用户那里获得输入
按下向导中的“完成”按钮后,我将使用IWorkspace
,IProject
等界面在工作区中创建项目。
我想将现有文件夹(可能还包含子文件夹和文件)复制到新创建的项目中,并在工作区中显示该文件夹。该文件夹不是Eclipse项目。
有没有办法做到这一点?
答案 0 :(得分:2)
快速<脏> 解决方案会将现有文件夹(及其所有内容)复制到项目位置下方的所需位置,然后刷新项目。
例如:
IProject project = ...
IPath location = project.getLocation();
Files.copy( pathToExistingFolder, location.toFile().toPath() );
project.refreshLocal( IResource.DEPTH_INFINITE, null );
更多适当的解决方案将遍历现有文件夹并创建其中找到的每个文件和文件夹的副本。
要创建新文件,请使用
IProject project = ...
IFile file = project.getFile( "path/relative/to/prooject" );
file.create( inputStream, IResource.NONE, null );
// or, to override and existing file (file.eists() == true):
file.setContents( inputStream, IResource.NONE, null );
假设inputStream
由现有文件夹中当前遍历的文件支持。
要创建新文件夹,请使用
IProject project = ...
IFolder folder = project.getFolder( "path/relative/to/prooject" );
folder.create( IResource.NONE, true, null );
我进一步假设您的现有文件最终将存储在(jared)插件中。在这种情况下,后一种方法是唯一可行的,因为它允许您从插件存储中提供文件夹结构和文件内容。
Plugin Development Environment (PDE)为manage and execute templates during project-creation提供了扩展点和API。虽然您当然不希望依赖PDE的插件,但您可能需要查看来源:https://github.com/eclipse/eclipse.pde.ui/tree/master/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates