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 ...
随机推荐
- 转:使用 SCons 轻松建造程序
转: https://www.ibm.com/developerworks/cn/linux/l-cn-scons/ 在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称 ...
- 怎样使用1M的内存排序100万个8位数
今天看到这篇文章.颇为震撼.感叹算法之"神通". 借助于合适的算法能够完毕看似不可能的事情. 最早这个问题是在Stack Overflow站点上面给出的(Sorting numbe ...
- 卸载 linux http
当我们想卸载httpd 的时候,使用rpm -qa httpd 的时候,我们发现有很多的依赖包.我们耐心的想一个一个的卸载的时候(使用rpm -e httpd-*),还会进入死循环.解决的办法是:使用 ...
- 仿htc sense的弹性listView!
demo下载:http://pan.baidu.com/s/1ntoICdV 前一段时间换了htc m7之后,对htc的sense ui有不错的印象.特别是它的listview十分有个性.提供弹性的o ...
- hunnu--11545--小明的烦恼——找路径
小明的烦恼--找路径 Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users: ...
- LeetCode_3Sum
一.题目 3Sum Total Accepted: 45112 Total Submissions: 267165My Submissions Given an array S of n intege ...
- CodeForces 318D Ants
题目链接 题意: 有n仅仅蚂蚁和m次询问 n仅仅蚂蚁初始所有位于起点(0,0)处.每4仅仅蚂蚁在同一格就会以该格为中心向上下左右四个方向爬一格 一仅仅向上,一仅仅向下,一仅仅向左.一仅仅向右 假设每一 ...
- eclipse 修改代码后无法生效,需要clean后才能生效的解决办法
勾选project-->Bulid Automatically选项(自动编译)
- DedeCms最新文章显示红色日期或加上new字或new小图片
DedeCMS发布的文章显示红色日期或加上new字或new小图片,给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片等,都是围绕pubdate做文章,写扩展的. 1.红色的日期 ...
- java在某个日期上添加n天的方法实现
//得到添加n天后的时间字符串 public String getAddDate(Date date,int n){ //格式转换 SimpleDateFormat sdf = new SimpleD ...