`

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.一致的信息。

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

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

 

//获取工作区根

IWorkspaceRoot myWorkspaceRoot = ResourcesPlugin.getWorkspace().getRoot();

//从工作区根获得项目实例

IProject myWebProject = myWorkspaceRoot.getProject("MyWeb");

// open if necessary

if (myWebProject.exists() && !myWebProject.isOpen()) myWebProject.open(null);
 

 

在对项目进行操作前,必须执行打开操作。打开项目操作将从文件系统中读取项目结构并读入内存,创建对应的项目资源树,这是一个显式的操作。

获取项目实例的再下一层,就是对项目中的文件和文件夹进行访问:

 

//获取文件夹实例

IFolder imagesFolder = myWebProject.getFolder("images");

if (imagesFolder.exists()) {

// create a new file

IFile newLogo = imagesFolder.getFile("newLogo.png");

    //文件系统的创建过程

FileInputStream fileStream = new FileInputStream("c:/MyOtherData/newLogo.png");

    newLogo.create(fileStream, false, null);

    // create closes the file stream, so no worries.  

}
 

 

上面的过程,首先获取images文件夹的句柄,在判断其存在后,在其中创建新文件newLogo

 

资源与文件系统的关联

通过接口IResource.getLocationURI来获得资源的绝对文件系统路径。反过来,通过IWorkspaceRootfindFilesForLocationURI或者findContainersForLocationURI来实现文件系统路径到工作区路径的mapping

 

资源属性

用于保存资源相关的特殊信息,包含会话级和持久级。会话级当项目关闭后失效,用于在内存中方便以名值对形式保存属性,持久级则在文件系统中保留资源属性,有长度限制(不大于2kb,对用于对象的持久化似乎有难度),需要注意命名时不要出现冲突。

 

项目级参数

可以为运行时参数Runtime preferences定义项目级范围(Project-Scope,用于在项目范围内对参数进行保存和操作:

//获取ContextIScopeContext projectScope = new ProjectScope(MyProject);//获取对应项目的参数节点Preferences projectNode = projectScope.node("com.example.myplugin");if (projectNode != null) {value = node.getBoolean("MyPreference", "true");//do something with the value.}
//参数回写

projectNode.flush();
 

 

资源挂接

工作区中的资源可以来自文件系统的不同位置,通过资源挂接来实现。实例代码:

   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"
 

 

分享到:
评论

相关推荐

    OpenExplorer(eclipse资源管理器插件)

    eclipse的一个插件,可以在eclipse中快速的打开选中的某个文件在电脑中的位置,直接定位到具体的文件夹,压缩文件包含了4.4以上版本和4.4一下版本的JAR包

    基于MySQL和Eclipse的人力资源管理系统毕业设计实现

    本系统实现了人力资源管理的主要功能,提高了人力资源管理的自动化和信息化水平,为企业人力资源管理提供了一个较为完善的信息平台。使用本系统可以有效地组织和管理企业的人力资源,达到人才激励和人力资源优化配置的...

    Eclipse插件开发培训_资源管理(入门).ppt

    Eclipse插件开发培训_资源管理(入门).ppt

    人力资源管理系统

    (毕业设计项目)人力资源管理系统,包括档案录入、用户管理、薪酬管理、培训管理、招聘管理等模块。代码、数据库表代码齐全,导入进去修改下连接的数据库即可使正常用

    基于JavaWeb的企业人力资源管理系统【项目源码+数据库脚本】(毕设)

    本项目是一套基于JavaWeb的企业人力资源管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 ...

    Eclipse 浏览目录插件

    Eclipse 4 插件,用于在资源管理器中打开活动窗口文档所在的文件夹,或打开命令行。安装:直接放置于 Eclipse 的 dropins 目录下,重启后工具栏及左键菜单均有Smart Explore条目。

    jetty 9.2.24

    jetty服务器,9.2版本适合java7+开发环境。 Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。 尽管网页服务器通常用来为人们呈现文档,但是... Jetty作为Eclipse基金会的一部分,是一个自由和开源项目。

    eclipse jetty插件安装(离线版)

    使用方法:解压缩,直接复制到eclipse安装目录的dropins文件夹下面,重启就可以了。 初次使用时在一个web项目上右键run as——run configuration

    Java学生信息管理系统(eclipse+MySQL)

    本资源为Java学生信息管理系统,实现功能如下: 1、系统的登录和注册 2、系统分为管理员,学生,教师三个身份,管理员和教师有权对学生信息进行增删改查操作,学生只能进行查询操作 3、学生成绩信息的增删改查操作 ...

    基于Eclipse+Java+Swing+Mysql图书信息管理系统

    系统介绍 该系统实现了查看图书列表、新增图书信息、删除图书...运行环境:eclipse、idea、jdk1.8 详见:https://blog.csdn.net/qq_33037637/article/details/125583597 系统经多次测试,运行无误,请大家放心下载。

    Eclipse插件开发培训_资源管理(进阶).ppt

    Eclipse插件开发培训_资源管理(进阶).ppt

    Eclipse简介和插件开发

    Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员...目前的Eclipse本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。

    韩顺平 学生管理系统 Eclipse+sqlServel源码

    只有模式二(模式一学习意义不大,就没弄)。是Eclipse项目源码和sqlServer项目源码。并附有图文教程,对新手学习有帮助。 另外,我原先上传的资源本来说不要分数的,结果不小心设置了是1分,然后怎么也改不了,也...

    使用Eclipse开发简易教程

    Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的...目前的 Eclipse 本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个 IDE。

    网络,服务,eclipse

    NULL 博文链接:https://jarip.iteye.com/blog/1841219

    Eclipse开发工具使用指南

    Eclipse 是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的...可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。

    人力资源管理系统SSH+MySQL技术

    通过人力资源管理系统可使管理者快速高效地完成企业日常事务中的人事工作,降低人力资源管理的成本,使管理者能集中精力实现企业战略目标。人力资源管理系统的具体目标如下: 对企业人力资源管理的基本信息进行管理...

    图书馆管理系统Eclipse-专业指导文档类资源

    很好的Eclipse做的图书管理系统噢~ 很好的Eclipse做的图书管理系统噢~ 很好的Eclipse做的图书管理系统噢~ 很好的Eclipse做的图书管理系统噢~

    基于SSM的人力资源管理系统【项目源码+数据库脚本】(毕设)

    本项目是一套基于SSM的人力资源管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都...

Global site tag (gtag.js) - Google Analytics