Groovy读取文件信息
1. eachLine -- 打开和读取文件的每一行
new File("foo.txt").eachLine {
    println it.toUpperCase();
}
2. readLines -- 其作用基本与 eachLine 相同,但它不接受闭包为参数,而是把文件行读到一个 List 中
lineList = new File("foo.txt").readLines();
lineList.each {
    println it.toUpperCase();
}
3. splitEachLine -- 读取文件的每一行,然后对行以指定分隔符分割成数组。不用再多说了,这个方法对处理 CSV 文件那可是相当的高效。
lineList = new File("foo.csv").splitEachLine(",") {
    println "name=${it[0]} balance=${it[1]}";
}
4. eachByte -- 处理二进制文件,以字节级访问文件,这个方法相当于 eachLine() 方法。
new File("foo.bin").eachByte { print it; }
5. readBytes -- 自然,处理二进制文件,以字节级访问文件,这个方法相当于 readLines() 方法了
byteList = new File("foo.bin").readBytes();
byteList.each {
    println it;
}
6. write -- Groovy 用这个方法写文件真是太直观了
new File("foo.txt").write("testing testing");
new File("foo.txt").write("""
This is
just a test file
to play with
""");
以上使用了三重引用语法,其中的文本保留格式的写入到文件中。注意上面写法在文件首尾都会有一个空行,除非起始和结束字符都要紧贴 """;还有上面方法写的文件用词本打开会是挤在一行,用 editplus 打开是多行,因为它采用的是 linux 下的 /n 换行,而不是 windows 下的 /r/n 换行。、
7. append -- 与 write 覆写文件不同,append 是在文件后追加内容
new File("foo.txt").append("""/
This is
just a test file
to play withff
"""
);
8. eachFile -- 功能上类似 java.io.File 的 listFiles() 方法。用来列举路径中的每个文件(包括目录),传给闭包处理
new File(".").eachFile {   //这里的 File 表示的是一个路径
    println it.getName();  //eachFile() 列出的每一项是一个 File 实例
}
9. eachFileRecurse -- 以深度优先的方式递归遍历路径,列出文件(包括目录),传给闭包处理
new File(".").eachFileRecurse {   //这里的 File 表示的是一个路径
    println it.getPath();  //eachFile() 列出的每一项是一个 File 实例
}
10. …… 再重复一下,其他 Groovy 对 java.io.File 的扩展方法请参考 http://groovy.codehaus.org/groovy-jdk/java/io/File.html。
如
eachDir()、eachDirMatch()、eachDirRecurse()、eachFileMatch()、filterLine()、
newInputStream()、newOutputStream()、newReader()、newPrintWriter()、
withInputStream()、withOutputStream()、withReader()、withPrintWriter()
等等。还要留意一下有一些方法是可以指定字符集的。
----
操作目录
列出目录所有文件(包含子文件夹,子文件夹内文件) :
def dir = new File(dirName)
if (dir.isDirectory()) {
dir.eachFileRecurse { file ->
println file
}
} dir.eachFileMatch(~/.*\.txt/) {File it-> println it.name } //使正则表达式匹配文件名
dir.eachFileMatch(FILES, ~/.*\.txt/) { File it-> println it.name }
 
写文件
import java.io.File  
def writeFile(fileName) {
    def file = new File(fileName)  
    if (file.exists())
        file.delete()  
    def printWriter = file.newPrintWriter() //   
    printWriter.write('The first content of file')
    printWriter.write('\n')
    printWriter.write('The first content of file')  
    printWriter.flush()
    printWriter.close()
}  
除了 file.newPrintWriter() 可以得到一个 PrintWriter,类似方法还有 file.newInputStream()、
file.newObjectInputStream()等。
更简洁写法:
new File(fileName).withPrintWriter { printWriter ->
     printWriter.println('The first content of file')
}  
解析 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<corporate>
<customer name="bill gates" company="microsoft"></customer>
<customer name="steve jobs" company="apple"></customer>
<customer name="bill dyh" company="sun"></customer>
</corporate>
<consumer>
<customer name="jone Doe"></customer>
<customer name="jane Doe"></customer>
</consumer>
</customers>
def customers = new XmlSlurper().parse(new File("customers.xml"))
/*对文件进行解析*/
for(customer in customers.corporate.customer){
    println "${customer.@name} works for${customer.@company}";
} 
解析 propeties 文件
参考 groovy: How to access to properties file?,代码如下:
def props = new Properties()
new File("message.properties").withInputStream {
stream -> props.load(stream)
}
// accessing the property from Properties object using Groovy's map notation
println "capacity.created=" + props["capacity.created"] def config = new ConfigSlurper().parse(props)
// accessing the property from ConfigSlurper object using GPath expression
println "capacity.created=" + config.capacity.created
另外一种方式:
def config = new ConfigSlurper().parse(new File("message.groovy").toURL())
message.groovy 内容如下:
capacity {
  created="x"
  modified="y"
}
Groovy读取文件信息的更多相关文章
- linux  读取文件信息并且输出
		
版权为个人所有,欢迎转载如转载请说明出处.(东北大亨) http://www.cnblogs.com/northeastTycoon/p/5513231.html 以下为读取文件信息做输出操作. 1. ...
 - HTML5的File API读取文件信息
		
html结构: <div id="fileImage"></div> <input type="file" value=" ...
 - .net上传文件,利用npoi读取文件信息到datatable里
		
整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...
 - pytest 9 pytest-datadir读取文件信息
		
安装:pip install pytest-datadir 介绍:用于操作测试数据目录和文件的插件.pytest-datadir他会寻找包含测试模块名字的文件夹或者全局的一个文件夹名字为data下的数 ...
 - 读取文件信息,并通过sscanf从中获取所需数据
		
#include <stdio.h> #include <stdlib.h> #include <string.h> int file_length(char* f ...
 - python读取文件内的IP信息 练习
		
代码如下: #导包 import fileinput import re def readArw(): for line in fileinput.input(r"G:/raw.txt&qu ...
 - Servlet读取文件的最好的方式
		
在java web 开发的时候不可避免的会读取文本信息,但是方式不同,所付出的代价也是不一样的,今天学到了一个比较好的实用性的技巧,拿来与大家分享一下. 读取属性配置文件 之所以说成是读取属性(pro ...
 - 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
		
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
 - QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息
		
Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...
 
随机推荐
- (转)面试大总结之一:Java搞定面试中的链表题目
			
面试大总结之一:Java搞定面试中的链表题目 分类: Algorithm Interview2013-11-16 05:53 11628人阅读 评论(40) 收藏 举报 链表是面试中常出现的一类题目, ...
 - UVA - 1639 -Candy
			
题目链接:https://vjudge.net/problem/UVA-1639 题目大意: 有两个糖果盒,每个盒子里面有n个糖果,每天随机选一个(概率分别为p,1-p),然后吃一颗糖.直到有一天,打 ...
 - 【JAVASCRIPT】React 学习 - 登录实战
			
摘要 实现一个登录的react 组件, 包含组件更新.ajax 交互.渲染新组建. 代码 <head> <meta charset="utf-8"> < ...
 - javascript对象的创建--相对java 怎样去创建了"类"i以及实例化对象
			
由于javascript没有java那么多基本类型,同时也没有提供class这个东西,那么我们想实现javascript的对象创建应该怎么办呢,我简单地从w3c提供的课件中提取了一下几种方法: 一.工 ...
 - error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
			
一.情形描述 下载了一个VS的源码,不知道此源码的版本.使用VS2010编译时出现如下报错: error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 二.解决方法 在VS2010界 ...
 - JAVA,JSP,Servlet获取当前工程路径-绝对路径
			
在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro ...
 - expdp导出文件,ORA-01555: 快照过旧: 回退段号 716
			
快照号过旧,回退段号过小,信息如下:ORA-31693: 表数据对象 "CZBSDB"."SMS_RESULT_RECORD" 无法加载/卸载并且被跳过, 错误 ...
 - RabbitMQ安装以及java使用(一)
			
最近闲来无事,整理下基础知识,本次安装 1.RabbitMQ版本是3.6.10 2.操作系统是centOS 7 64位 虚拟机IP:192.168.149.133 1.安装更新系统环境依赖 yum ...
 - Jenkins安装与配置
			
Jenkins安装与配置 2 Jenkins安装 在最简单的情况下,Jenkins 只需要两个步骤: 1.下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins- ...
 - CentOS6 安装Sendmail + Dovecot + Roundcubemail
			
前言 本文是继CentOS6 安装Sendmail + Dovecot + Squirrelmail 关于邮箱服务器配置的第二篇文章,因为关于使用Sendmail进行相关配置的文章.资料等太老,而且资 ...