加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用 Groovy 获取代码树中的资源

发布时间:2020-12-14 17:03:30 所属栏目:大数据 来源:网络整理
导读:先前写 MSN 日志合并脚本的时候,顺便看了 jungleford 的文章从 Jar 中获取资源的方法。很多时候 IDE 替我们做了相关的工作,以至于关键时刻很多人都不知道这类基本操作是怎样的。Jungleford 提供了标准的 Java 实现,那么在 Groovy 下,真正的懒人会怎么做

先前写 MSN 日志合并脚本的时候,顺便看了 jungleford 的文章从 Jar 中获取资源的方法。很多时候 IDE 替我们做了相关的工作,以至于关键时刻很多人都不知道这类基本操作是怎样的。Jungleford 提供了标准的 Java 实现,那么在 Groovy 下,真正的懒人会怎么做呢?

PS. 这里说的代码树是指……怎么说呢,就是你放代码的那个目录结构。运行 Java 程序的时候当然不会以源代码的形式存在,一般是打到 jar 当中,所以 jungleford 的文章直接写成了从 Jar 中获取

以原文中的 getTextFromJar 来说吧(其实严格的来说和 Jar 没啥关系),用 Groovy 的话,这十几行代码可以写成一句:(path 为所谓的 binary name,如果这个文件在package x.y.z 下的话,path 就是 /x/y/z/filename

   1: ClassLoader.getResource(path)?.text

脚本语言的威力就是如此啊。

一般来说我们用的 *.getClass().getResource 或 **AsStream 其实就是委托给 ClassLoader 来完成的,配合 Groovy 的动态机制,一行代码足矣!

PS II: 严格的来说 Groovy 的“绝对速度”比 Java 要差不少,但是大多数时候程序的速度瓶颈都是在I/O或者Web方面,所以对用户来说“感知速度”不会差。另外原文中的代码使用 String 而非 Buffer/Builder 进行迭代,第一反应是要修改。但是同样考虑到 Jar 中封装的文本通常都非常短,而且只读取一次,所以马马虎虎也算 OK 了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读