首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Eclipse资源管理(1)

2012-08-15 
Eclipse资源管理(一)?基本概念Eclipse开发平台提供资源插件(org.eclipse.core.resources),插件提供对项目(

Eclipse资源管理(一)

?基本概念

Eclipse开发平台提供资源插件(org.eclipse.core.resources),插件提供对项目(Project)、文件(File)、文件夹(Folder)的相关管理和操作。

工作区(workspace)是用户数据文件在平台中的组织和保存区,工作区中的文件通过资源的概念进行组织。工作台(Workbench)可以理解为用户浏览和操作工作区的一个工具。资源插件提供创建、导航、操作工作区中资源的API。工作台利用这些API提供对应功能给用户,这些API也允许用户进行扩展。

资源有三种类型:项目(Project)、文件(File)、文件夹(Folder)。项目中包含若干个文件和文件夹,作为一个表示特殊区域的资源单元和容器,项目之间不可嵌套。工作区中有若干个项目。文件和文件夹的概念和OS中的概念类似。

工作区中的资源以资源树的形式进行组织,文件和文件夹都是项目的后代结点。定义了一个工作区根作为一类特殊的资源存在,作为资源树的根节点。

?

资源的访问

在开发平台中,工作区由IWorkspace的实例进行表示,IWorkspace提供对工作区中的资源访问接口。具体的,通过如下语句获取工作区实例:

IWorkspace workspace = ResourcesPlugin.getWorkspace();

在文件系统中,工作区与一般的文件夹结构一致。但包含有两类隐藏文件(夹),.metadata存放于工作区根位置,是一个文件夹,文件夹中保存包含有工作区结构的信息文件,在开发平台中必须通过特殊的插件API进行访问;.project则存在于项目节点位置,是一文件,文件中保存着与IProjectDescription.一致的信息。

资源插件提供IProject,?IFolder, and?IFile实现用户对这些资源类型的访问,IResource中则定义了扩展的通用操作接口,还可以使用org.eclipse.core.runtime中的接口IPath来表示工作区的资源或文件系统的访问路径。

对资源的访问与对java.io.File的访问类似,当调用对应API时,返回一个句柄,不需要在访问前确保资源是否存在。具体的,通过如下代码实现访问:

?

   IWorkspace workspace = ResourcesPlugin.getWorkspace();   IPathVariableManager pathMan = workspace.getPathVariableManager();   String name = "TEMP";   IPath value = new Path("c:\temp");   //定义path变量,实现资源挂接if (pathMan.validateName(name).isOK() && pathMan.validateValue(value).isOK()) {      pathMan.setValue(name, value);   } else {      //invalid name or value, throw an exception or warn user   }   IProject project = workspace.getProject("Project");//assume this exists   IFolder link = project.getFolder("Link");   IPath location = new Path("TEMP/folder");   //在资源操作前需要加入验证动作if (workspace.validateLinkLocation(location).isOK()) {      link.createLink(location, IResource.NONE, null);   } else {      //invalid location, throw an exception or warn user   }   //运行结果 link.getFullPath() ==> "/Project/Link"   link.getLocation() ==> "c:tempfolder"   link.getRawLocation() ==> "TEMP/folder"   link.isLinked() ==> "true"     IFile child = link.getFile("abc.txt");   child.create(...);   child.getFullPath() ==> "/Project/Link/abc.txt"   child.getLocation() ==> "c:tempfolderabc.txt"   child.getRawLocation() ==> "c:tempfolderabc.txt"   child.isLinked() ==> "false"
?

?

热点排行