我需要在绝对位置创建IFolder。
我通常有一个在工作区中为我执行“构建”(或至少称为“构建”)的类。生成目标文件夹的IFolder由以下方法返回:
public IFolder getTargetFolder(IProject project){
return project.getFolder("build");
}
现在,我为“部署”创建了一个子类(放入具有绝对标识符的目录中)。该子类包含相同的功能,但
getTargetfolder
例程应如下所示:@Override
public IFolder getTargetFolder(IProject project){
IPath path = new Path("M:\\Path\\To\\My\\Deployment\\Directory\\");
IFolder target = project.getFolder(path);
return target;
}
但是,我遇到了问题,并且似乎没有找到该文件夹的句柄,并且说文件夹(
<ProjectRoot>/Path/To/My/Deployment/Directory
)不存在的异常。如何指定这不应该是相对路径? 最佳答案
指定给project.getFolder()
的名称必须是成员文件夹的名称(请参阅JavaDoc)。
您无法使用工作区外部的Resources API访问文件或文件夹。但是,如果M:\\...
路径位于属于工作空间的项目中,则可以通过IWorkspaceRoot#getContainerForLocation()
解析文件夹。
例如:
IContainer container = project.getWorkspace().getRoot().getContainerForLocation( "M:\\..." );
返回的
container
可以是IProject
或IFolder
。但是请注意,返回的容器不一定位于project
内。可以在Resources and the file system中找到更多信息。