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 ...
随机推荐
- 【c++】面向对象程序设计之虚函数详解
一.动态绑定什么时候发生 当且仅当通过指针或引用调用虚函数时,才会在运行时解析该调用 二.派生类中的虚函数 当我们在派生类中覆盖了某个虚函数时,可以再一次使用virtual指出该函数的性质,但是这么做 ...
- python 3.4读取输入参数
python 3.4读取输入参数 学习了:https://blog.csdn.net/qq_24815615/article/details/52302615 注意,sys.args[0]是pytho ...
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
题意: 对一个无向图给出一个度序列,问他是否可简单图化. 分析: 依据Havel定理,直接贪心就可以. 代码: //poj 1659 //sep9 #include <iostream> ...
- BubbleGum96 开箱杂谈与软件资源
前言 原创文章,转载引用务必注明链接. 拿到有一段时间了,一直在想写哪些内容.96boards发布以来,吸引了很多眼球.这里我就慢慢随便聊聊,希望能让大家对96boards有更多了解. 开箱 [开箱图 ...
- C#串口通讯教程 简化一切 只保留核心功能 这可能是最易于理解的一篇教程
C#串口通讯教程 简化一切 只保留核心功能 这可能是最易于理解的一篇教程 串口的定义,请自行了解. C#操作串口通讯在.Net强大类库的支持下,只需要三个步骤: 1 创建 2 打开 3 发送/接受 ...
- spring中构造函数注入
spring中构造函数注入,简单来说,就是通过beans.xml中,设置对应的值.而且通过bean类中的构造函数进行注入这些值. 文件结构 watermark/2/text/aHR0cDovL2Jsb ...
- ubuntu搭建samba服务器
一.为什么要用Samba? Samba的主要任务就是实现Linux系统和Windows系统之间的资源共享. 二.需要的软件? 我是在ubuntu上实现的,所以我只需在配置好ubuntu的更 ...
- this、call和apply、bind
this关键字: JavaScript的this关键字,总是指向一个对象,具体指向哪个对象,是根据运行时函数指向环境动态绑定的.简单来说,this就是谁调用指向谁.具体使用中,this的指向,大致可以 ...
- 三张图教你生成一个Android jar 库。
我看到非常多教人使用第三方开源组件的Android教程.都是在教基于源代码project的库导入,个人觉得非常不妥,觉得最恰当的方式是把源代码project生成一个jar再导入到目标project上使 ...
- 文件管理中心iOS版简介
App Store地址:https://itunes.apple.com/cn/app/id1023365565?mt=8 文件管理中心-装机必备的文件管家,专业的rar-zip 解压工具,局域网看片 ...