groovy-输入输出
Groovy为I/O提供了一系列的helper methods ,所有的这些方法都适用于标准的 Java Reader/Writer ,InputStream/OutputStream 和File 以及URL classes.
闭包的使用可以确保资源被正确的关闭,比如遍历文件的每一行可以使用下面的代码:
1 |
new File("foo.txt").eachLine { line -> println(line) } |
如果在某些情况下,println()方法抛出了异常,那么eachLine()方法将确保资源被正确的关闭,同样的,如果在读取的时候发生了异常,那么资源也将会被正确的关闭。
如果你希望使用在reader/writer object或者input/output stream object的时候,有一些辅助方法来帮助你处理资源的关闭,那么这个时候你可以使用闭包。他将自动的在异常发生的时候关闭所有的资源,比如下面的代码:
1 |
def count=0, MAXSIZE=100 |
2 |
new File("foo.txt").withReader { reader -> |
3 |
while (reader.readLine() != null) { |
4 |
if (++count > MAXSIZE) throw new RuntimeException('File too large!') |
5 |
} |
6 |
} |
以及:
1 |
def fields = ["a":"1", "b":"2", "c":"3"] |
2 |
new File("foo.ini").withWriter { out -> |
3 |
fields.each() { key, value -> |
4 |
out.writeLine("${key}=${value}") |
5 |
} |
6 |
} |
Further Information
- Streams, Readers, and Writers for more on Input and Output.
- See also: Process Management
groovy-输入输出的更多相关文章
- groovy入门 第05章 基本输入输出
基本输入输出 5.1基本输出 print XXX //同一行输出 println XXX //换行输出 输出字符串: def message ="My name is Michael& ...
- groovy学习(五) 命令行输入输出
isr = new InputStreamReader(System.in);br = new BufferedReader(isr);name = br.readLine();println(&qu ...
- 使用Groovy+Spock轻松写出更简洁的单测
当无法避免做一件事时,那就让它变得更简单. 概述 单测是规范的软件开发流程中的必不可少的环节之一.再伟大的程序员也难以避免自己不犯错,不写出有BUG的程序.单测就是用来检测BUG的.Java阵营中,J ...
- Groovy+Spock单元测试
一.导入依赖 Spock是基于JUnit的单测框架,提供一些更好的语法,结合Groovy语言,可以写出更为简洁的单测. <!-- groovy依赖 --> <dependency&g ...
- [译]DbContext API中使用SqlQuery和ExecuteSqlCommand获取存储过程的输入输出参数
水平有限,欢迎指正.原文:http://blogs.msdn.com/b/diego/archive/2012/01/10/how-to-execute-stored-procedures-sqlqu ...
- Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)
这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...
- ECS Linux 服务器解除ssh登陆后被锁定或暂停输入输出的终端
在使用SSH终端(如Xshell)登陆时,若不慎点击 Ctrl + S 按键,会导致终端很像被锁定,输入和输出都无响应. 这是由于操作系统的终端收到指令 Ctrl + S 后,会暂停终端输入输出的刷 ...
- linux中输入输出和重定向问题
输入输出解释 当我们执行shell的时候,每个进程都和三个打开的文件有关系,并使用文件描述符来引用这些文件.但这些文件不容易记忆,所以shell给了相应的文件名: 0:输入文件-标准输入(它的命令是输 ...
- C/C++ 标准输入输出重定向
转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用.OJ基本都是用标准输入 ...
- Lattice FIFO 使用之FIFO_DC输入输出宽度不同时 的一个注意事项
在使用FIFO_DC的时候,我们知道这个FIFO的一个功能是可以输入输出的数据宽度不一样,比如: 输入数据为128bit,输出数据为16bit,FIFO内部可以实现这样的转换,但是输出的时候是先送出一 ...
随机推荐
- import javax.servlet.FilterConfig;
具体的使用方法你可以在google上搜索 “filter 过滤器”,FilterConfig可以获取部署描述符文件(web.xml)中分配的过滤器初始化参数.针对你的问题回答,结果就是说FilterC ...
- usb驱动开发2之代码地图
USB只是Linux庞大家族里的一个小部落,host controller是它们的族长,族里的每个USB设备都需要被系统识别.下图显示包含一个USB接口的USB鼠标导出的结果. USB系统中的第一个U ...
- Navi.Soft20.WinCE使用手册
1.概述 1.1应用场景 随着物联网的普及,越来越多的制造商对货品从原料配备,加工生产,销售出库等环节的要求和把控越来越高.在此情况之下,传统的ERP软件已经无法满足现有的流程. 移动设备的应用,在很 ...
- IC系统组成概论
IC系统是什么? 对算法工程师来说,IC系统是完成特定功能的硬件.对架构设计师来说,IC系统包括控制,运算,存储部分.电路设计工程师来说,IC系统是加法器,乘法器,与非门,运算放大器,开关电容等的搭配 ...
- C语言 数组做函数参数不传数组个数的遍历方法
//数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void ...
- Eclipse中10个最有用的快捷键组合(转)
Eclipse中10个最有用的快捷键组合 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask ...
- 在Linux用libcurl.a在链接的时候出错
其实出错是因为curl链接的时候需要别的库.我用如下方法解决 1.http://curl.haxx.se/download/curl-7.45.0.tar.gz官网下载源码 2../configure ...
- 使用MarkdonPad2学习心得
使用MarkdonPad2学习心得 心得体会 自从接触了娄老师的课程后,逐渐的适应了使用博客园.实验楼等网络学习资源学习课程,虽说和传统的授课方式有些不同,但毕竟我们就是与电脑与网络打交道,所以在学习 ...
- 证书与keytool
证书的来源与使用: 对数据进行签名是我们在网络中最常见的安全操作.签名有双重作用,作用一就是保证数据的完整性,证明数据并非伪造,而且在传输的过程中没有被篡改,作用二就是防止数据的发布者否认其发布了该数 ...
- memset的使用
今天写程序的时候用了memset这个函数,我知道他是关于清空指针的,设置为0.但我用的时候,没有注意到他是以字节为单位进行操作的,改了半天其他程序内容.要注意的是,memset是对字字进行操作,所以以 ...