最近项目用到了groovy,其实groovy底层就是java,能够编译为字节码,大部分情况能够用较少的代码完成java的功能,动态解释性的脚本语言,语法更加灵活,如果不先看看groovy的入门文章,会觉得挺怪,有多种语言结合的感觉在里面,一时还难以适应。下面的文章供参考:
1、精通 Groovy-使用 Groovy 的简单语法开发 Java 应用程序
http://www.ibm.com/developerworks/cn/education/java/j-groovy/index.html
2、each遍历详解
http://www.ibm.com/developerworks/cn/java/j-pg04149.html
3、文件操作
http://berdy.iteye.com/blog/1181018
4、xml解析详解
http://www.ibm.com/developerworks/cn/java/j-pg05199/index.html
-------------------------------------
1、文件的操作:对java原有的io进行了扩展,增加了许多闭包后省去了很多逻辑无关代码,同时自动进行资源管理和异常处理。
2、each非常好用,不仅操作集合、映射,还能操作文件、数据库结果集等等。
//遍历文件夹下所有文件,是不是比java好用很多 def dir = new File("f:\\mtv") fileNum=0 dirNum=0 dir.eachFileRecurse{ file-> if(file.isFile()){ fileNum++ println "FILE: ${file}" }else if(file.isDirectory()){ dirNum++ println "DIR: ${file}" } } println "fileNum="+fileNum println "dirNum="+dirNum
//HTTP请求 def url = new URL("http://www.taobao.com") def file = new File("d:\\aa.htm"); url.eachLine{line-> file.append(line) } or "http://www.taobao.com".toURL().eachLine{println it)} ----------------------------------------------------- 文件需要换行的话,需要增加换行符 def sepLine = System.getProperty('line.separator') file << "$userId$sepLine"
//解析xml def users = new XmlSlurper().parse("d:\\aa.xml") users.user.each{ user -> println "${user.name},${user.age}" } //aa.xml <users> <user> <name>Java</name> <age>22</age> </user> <user> <name>Groovy</name> <age>23</age> </user> <user> <name>Python</name> <age>24</age> </user> </users>
import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; // 利用java 类查找jar包中的文件 def findJarFile(File zipFile, String target){ ZipFile zip = new ZipFile(zipFile) ZipEntry entry = null Enumeration<? extends ZipEntry> en = zip.entries() while (en.hasMoreElements()) { entry = en.nextElement() if (entry.isDirectory()) { continue } if(entry.name.contains(target)){ println zipFile.name println entry } } zip.close() } String target = 'LocalStrings.properties' new File('E:\\apache-tomcat-6.0.14\\lib').eachFile{ if(it.name.endsWith('.jar')) findJarFile(it, target) }
3、xml文件解析、创建等
//类似python的字符串声明,不需要java中的转义
def xml = """
<langs type="current">
<language>Java</language>
<language>Groovy</language>
<language>JavaScript</language>
</langs>
"""
def langs = new XmlParser().parseText(xml)//parse("languages.xml"),文件解析
println "type = ${langs.attribute("type")}"
langs.language.each{
println it.text()
}
//生成xml数据的代码非常简洁,各种java的三方库只能望其项背 def xml = new groovy.xml.MarkupBuilder() //def sw = new StringWriter() //def xml = new groovy.xml.MarkupBuilder(sw) //xml字符串输出到StringWriter xml.langs(type:"current"){ language(loc:"default","java") language("Groovy") language("JavaScript") } //output <langs type='current'> <language loc='default'>java</language> <language>Groovy</language> <language>JavaScript</language> </langs>
Groovy 能够实现这种 Builder 魔法,因为它是一种动态的语言。另一方面,Java 语言则是静态的:Java 编译器将确保所有方法在您调用它们之前都是确实存在的。(如果您尝试调用不存在的方法,Java 代码甚至不进行编译,更不用说运行了。)但是,Groovy 的 Builder 证明,某种语言中的 bug 正是另一种语言的特性。如果您查阅 API 文档中的 MarkupBuilder 相关部分,您会发现它没有 langs() 方法、language() 方法或任何其他元素名称。幸运的是,Groovy 可以捕获这些不存在的方法调用,并采取一些有效的操作。
xml2种解析方式区别,XmlSlurper就像直接操作xml一样方便
def xml = """ <langs type='current' count='3' mainstream='true'> <language flavor='static' version='1.5'>Java</language> <language flavor='dynamic' version='1.6.0'>Groovy</language> <language flavor='dynamic' version='1.9'>JavaScript</language> </langs> """ def langs = new XmlParser().parseText(xml) println langs.attribute("count") langs.language.each{ println it.text() } langs = new XmlSlurper().parseText(xml) println langs.@count langs.language.each{ println it }
相关推荐
在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...
《Groovy学习与Gradle实践经典手册》是一本深度探讨Groovy编程语言和Gradle构建工具的指南,专为Android及Java开发人员提供全面的知识覆盖。本书旨在帮助开发者提升在项目管理和自动化构建方面的技能,使其能够高效...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。
Groovy学习大礼包是一个全面的资源集合,旨在帮助初学者和有经验的开发者深入理解和掌握Groovy语言。这个礼包包含了三个关键的学习资料: 1. **Groovy轻松入门.doc** - 这份文档很可能是为新手设计的,提供了一个...
本学习资料将带你深入了解Groovy的魅力,并逐步掌握其核心概念与实践技巧。 1. **Groovy简介** Groovy是由James Strachan于2003年创建的,它的设计目标是简化Java的语法,提高开发效率。Groovy可以直接调用Java的...
这份"Groovy学习资料"包含了深入理解和实践Groovy所需的关键知识点,帮助开发者从零基础到能够开发实际项目并成功上线。 首先,Groovy的基础语法是学习的重点。Groovy支持与Java相似的类、接口和继承结构,但其语法...
Groovy学习资料-中文.rar。Groovy学习资料。Grails学习资料。mht网页格式。
### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...
通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...
### Groovy学习笔记知识点梳理 #### 一、Groovy简介 **1.1 概念** Groovy是一种灵活且功能强大的编程语言,它与Java平台紧密结合,具备诸如Python和Ruby等动态语言的特点。该语言的设计初衷是为Java开发者提供一...
以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...
3. **Groovy Shell和GroovyConsole**: 这两个工具是学习和测试Groovy代码的好帮手,可以快速尝试和验证代码片段。 4. **GString**: Groovy的字符串支持模板语法,可以方便地进行字符串格式化,如`"Hello, ${name}"`...
该项目是一套基于Groovy与Java融合的Groovy学习实践之路源码设计,总计包含91个文件,其中Groovy文件71个,XML文件6个,Java文件4个,Markdown文件2个,JSON文件2个,TXT文件2个,Git忽略文件1个,IML文件1个,以及...
- 提供的"groovy学习资料"和"groovy入门资料"可能是文档或PDF教程,这些资源可以帮助初学者快速了解Groovy的基础知识和实践技巧。 - "思想品德.doc"可能包含关于编程理念或最佳实践的内容,而"1.pdf"可能涵盖更...
"Grails&Groovy参考资料"这个压缩包文件很可能是包含各种教程、文档、示例代码和其他学习资源的集合,可以帮助你深入理解和实践这两个技术。在学习过程中,你可以结合这些资料,通过阅读、编程练习和实际项目来提升...