Gradle系列之二 Groovy对文件的操作
Groovy对文件的操作
对文件的遍历
假设文件的原始内容为:
hello,world
这里是北京
andorid and ios are good system
第一种方法:使用 eachLine()
//1.1 new 一个File
def file = new File(filepath)
//1.2 groovy对文件的遍历
file.eachLine {
//打印每一行内容
line -> println line
}
//输出
hello,world
这里是北京
andorid and ios are good system
第二种方法:使用File的getText()
def content = file.getText()
println content
//输出
hello,world
这里是北京
andorid and ios are good system
是不是更简单,直接调用一个方法就OK了,比Java操作文件要简单太多了吧
第三种方法:使用 file.readLines()方法
def list = file.readLines()
list.collect {
println it
}
println "文件有" + list.size() + "行"
//输出
hello,world
这里是北京
andorid and ios are good system
文件有3行
是不是很方便,readLines()函数直接把文件内容以行为单位读取到一个List中,这样操作就更方便了
第四种方法:读取文件部分内容
//读取前20个字符
def reader = file.withReader {
reader ->
char[] buffer = new char[20]
reader.read(buffer)
return buffer
}
println reader
//输出
hello,world
这里是北京
an
如何拷贝文件?
我们写一个方法,把刚才的文件拷贝到另一个文件中去,代码如下:
def copy(String sourcePath, String destPath) {
try {
//1 创建目标文件
def destFile = new File(destPath)
if (!destFile.exists()) {
destFile.createNewFile()
}
//2 开始拷贝
new File(sourcePath).withReader { reader ->
def lines = reader.readLines()
destFile.withWriter { writer ->
lines.each {
//把每一行都写入到目标文件中
line -> writer.append(line+"\r\n")
}
}
}
return true
} catch (Exception e) {
return false
}
}
读写对象
有时候我们会有这样的需求,需要把我们的bean对象写入到文件中,用到的时候再读出来,下面我们就来实现这样的功能,代码如下:
//将一个对象写入到文件中
def saveObject(Object object, String path) {
try {
//1 首先创建目标文件
def destFile = new File(path)
if (!destFile.exists()) {
destFile.createNewFile()
}
destFile.withObjectOutputStream { out ->
out.writeObject(object)
}
return true
} catch (Exception e) {
}
return false;
}
//从一个文件中读到bean
def readObject(String path) {
def obj = null
try {
//1 先判断文件是否存在
def file = new File(path)
if (!file.exists()) {
return null
}
//2 从文件中读取对象
file.withObjectInputStream { reader ->
obj = reader.readObject();
}
return obj
} catch (Exception e) {
}
return null
}
Groovy对xml文件的操作
/**
test.xml 文件的内容如下:
<langs type="current">
<language1>Java</language1>
<language2>Groovy</language2>
<language3>JavaScript</language3>
</langs>
*/
//一行代码就解析了xml
def langs = new XmlParser().parse("test.xml")
//打印出node的属性
println langs.attribute('type')
//对xml文件的遍历
langs.each {
println it.text()
}
//输出
current
Java
Groovy
JavaScript
以上就是groovy对文件的操作
Gradle系列之二 Groovy对文件的操作的更多相关文章
- Wix打包系列(二)用户界面和本地化操作
原文:Wix打包系列(二)用户界面和本地化操作 上一章节,我们已经大概知道如何对文件进行打包安装,不过我们也注意到,通过对Sample.wxs的编译链接,生成的msi安装包没有任何用户界面,只有一个安 ...
- Docker系列(二)镜像下载、操作容器、镜像导入导出等操作
一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...
- 【Python全栈笔记】05 [模块二] 19 Oct 文件的操作
文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r: 只读模式(默认) w: 只写模式 ...
- Spark系列(二) Spark Shell各种操作及详细说明
并行化scala集合(Parallelize) //加载数据1~10 val num=sc.parallelize(1 to 10) //每个数据项乘以2,注意 _*2记为一个函数(fun) val ...
- MSSQL系列 (二):表相关操作、列操作、(唯一、主键、默认、检查、外键、非空)约束、临时表
1.创建表 --创建学生班级表 create table StuClass ( ClassId int primary key, --班级ID 主键约束 ClassName nvarchar(30) ...
- python学习8 文件的操作
本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. op ...
- Gradle系列之Groovy基础篇
原文发于微信公众号 jzman-blog,欢迎关注交流. 上一篇学习了 Gradle 的入门知识,Gradle 基于 Groovy,今天学习一下 Groovy 的基础知识,Groovy 是基于 JVM ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在从Android Studio3.0.0版本升级到Android Studio3.0.1版本的时候,出现了一个问题,需要升级Gra ...
随机推荐
- Android开发之入口Activity
Android开发之入口Activity Adnroid App是怎样确定入口Activity的? 难道就由于class的类名叫MainActivity,布局文件叫activity_main.xml? ...
- uva 11488 - Hyper Prefix Sets(字典树)
H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...
- free命令具体解释——Linux性能分析
一.使用格式 语法格式:free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V] [-b | -k | -m] :选择数据的单位-b字节.-k千字节.-m ...
- c程序设计语言第一章1
1,c程序都是由函数和变量组成的. 练习1.6验证布尔表达式getchar()!= EOF的取值是0还是1 答: #include <stdio.h> #include <stdli ...
- sanic官方文档解析之streaming(流动,滚动)和class_based_views(CBV的写法)
1,streaming(流媒体) 1.1请求流媒体 Sanic允许你通过流媒体携带请求数据,如下,当请求结束await request.stream.read()就会返回None,仅仅只有post请求 ...
- 答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}
答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}
- Shell编程——Shell中的数学运算
在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...
- 使用cwRsync在Windows的目录之间增量同步文件
http://www.qiansw.com/using-cwrsync-in-the-windows-directory-between-the-incremental-synchronization ...
- javascript查找子节点时,html里的换行可能会被当成节点
1.直接去HTML里找到该换行的地方去掉换行 2.写一个方法把元素类型为空格而且是文本都删除 function del_ff(elem){ var elem_child = elem.childNod ...
- 概率dp集合
bzoj1076 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后 ...