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 ...
随机推荐
- SQL Prompt 破解之道
1. 下载SQL Prompt 5.3.4.1,是个压缩包,里面有三个文件 免登录免积分下载地址:http://download.csdn.net/detail/caizz520/4557385 1) ...
- ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
一 矩阵键盘控制蜂鸣器原理: 1.1 本实验实现8*7矩阵键盘上按键控制蜂鸣器响. 1.2 实验思路:根据电路图原理,找出矩阵键盘行列所对应的引脚,赋予对应的按键值,然后控制蜂鸣器响. 1.3 ...
- 关于Class.forName(className).newInstance()介绍
Class.forName(xxx.xx.xx) 返回的是一个类 首先你要明白在java里面任何class都要装载在虚拟机上才能运行.这句话就是装载类用的(和new 不一样,要分清楚). 至于什么时候 ...
- 【JAVASCRIPT】React学习- 杂七杂八
摘要 记录 React 学习中的小细节 setState setState 有一定的时间延迟,如果需要保证 setState 之后执行某些动作,可以采用以下方法 this.setState({ vis ...
- 2.跑nodejs文件
1.安装nodejs的环境,这里不介绍了. app.js 'use strict'; //process.argv 接受变量 var command = process.argv[2]; var a ...
- Java常用文件操作-1
在我们的实际工作中经常会用到的文件操作,再此,将工作中碰到的做一个记录,以便日后查看. 1.复制文件夹到新文件夹下 /** * 复制文件夹下所有文件到指定路径 *@param oldPath *@pa ...
- 原生JS实现各种经典网页特效——Banner图滚动、选项卡切换、广告弹窗等
在制作网页过程中,我们可能会遇到各种常用的经典网页特效,比如Banner图片滚动.选项卡循环播放.右下角广告弹窗.评论提交展示.选项动态增删.剪刀石头布小游戏等等等...是不是感觉都见到过这些场景.那 ...
- 7种方法解决移动端Retina屏幕1px边框问题
在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...
- 自动生成AWR报告
--自动生成AWR报告 -------------------2013/09/23 脚本代码: #!/bin/bash AWR_FORMAT=html NUM_DAYS=1 MAX_S ...
- 关于CSS格式与布局中的基础知识的简单操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...