Gradle技术之二 Groovy对文件的操作

九路 等级 435 0 0

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+"
")
                }
            }
        }

        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语法精讲
Gradle技术之一 Groovy语法精讲 gradle脚本是基于groovy语言开发的,想要学好gradle必须先要对groovy有一个基本的认识 1. Groovy特点 groovy是一种DSL语言,所谓的DSL语言,就是专门针对某一特定领域的语言,专精而不专广 是一种基于JVM的开发语言,也是编译成class字节码文件 结合和Pytho
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.
Gradle系列之三 Gradle概述以及生命周期
1 Gradle是一种编程框架 gradle主要由以下三部分组成 1 groovy核心语法 2 build script block 3 gradle api 注:本章所有的代码都在 https://github.com/jiulu313/gradledemo.git 如下图 73485499237410.png(https://img
Gradle技术之四 - Gradle的Task详解
1 Gradle的Task详解 1 Task定义和配置 2 Task的执行 3 Task的依赖和执行顺序 4 Task类型 5 Task结合gradle的生命周期 6 Task实战 1.1 Task定义和配置 1.1.1 查看所有的task java ./gradlew tasks 输出 Task :tasks
2019年,盘点一些我出过的前端面试题以及对求职者的建议
笔者虽然曾经也面试过很多求职者,但是对于前端的笔试和面试,我觉得并不能体现一个人的真实能力,所以建议大家多修炼前端真正的技术.对于前端面试题,之前也承诺过读者要出一篇,笔者大致总结一下曾今面试的题目.后续不会再出面试题,而是聚焦于一些真正的,有利于成长性的技术文章和思维方式,来帮助大家提高解决问题的能力. (https://usergoldcdn.
半小时掌握Android Gradle
目前国内对Android领域的探索已经越来越深,不少技术领域如插件化、热修复、构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情。所以Gradle必须要学习。 Gradle 里的几乎任何东西都是基于这两个基础概念: task project 掌握了这两个,你就掌握了一大半的 Gradle 知识了。 首先讲 Task
Groovy初探
开始之前 了解本教程的主要内容,以及如何从中获得最大收获。 关于本教程 如果现在有人要开始完全重写 Java,那么 Groovy 就像是 Java 2.0。Groovy 并没有取代 Java,而是作为 Java 的补充,它提供了更简单、更灵活的语法,可以在运行时动态地进行类型检查。您可以使用 Groovy 随意编写 Java 应用程序,连接 Java
Groovy基础与循环语句
Groovy 入门 在这一节中,将真正开始进行 Groovy 编程。首先,学习如何轻松地安装 Groovy(通过 Eclipse Groovy 插件),然后从一些有助于了解 Groovy 的简单示例开始。 轻松安装 Groovy 为了迅速开始使用 Groovy,需要做的全部工作就是安装 Eclipse 的 Groovy 插件。打开 Ecliplse,在
Groovy 集合与闭包
Groovy 集合 在 Groovy 提供的所有方便的快捷方式和功能中,最有帮助的一个可能就是内置的 集合。回想一下在 Java 编程中是如何使用集合的 — 导入 java.util 类,初始化集合,将项加入集合。这三个步骤都会增加不少代码。 而 Groovy 可以直接在语言内使用集合。在 Groovy 中,不需要导入专门的类,也不需要初始化对象。集合是语
Groovy中的类
Groovy 中的类 迄今为止,您已经用 Groovy 输出了许多次 “Hello World”,已经操作了集合,用闭包在集合上迭代,也定义了您自己的闭包。做所有这些工作时,甚至还没有讨论那个对 Java 开发人员来说至关重要的概念 — 类。 当然,您已经在这个教程中使用过类了:您编写的最后几个示例就是在不同类的 main() 方法中。而且,您已经知道,在
Retrofit 动态修改BaseUrl 操作
开发中会遇到URL需要动态切换,若你还是通过gradle打包切换是否不太灵活,下面将介绍一下retrofit基于OKhttp中动态修改URL; 原理添加拦截器,在retrofit中的现实更加灵活了如下代码: language private RetrofitUrlManager() { if (DEPENDENCY_OKHTT
前端 后端的区别
前台:眼睛看到的东西 关乎体验感。 后台:给管理人看的玩意 前端:程序员在进行编程的时候的代码编写。 后端:对应前端而言的,编写代码基本上是提供给前端调用,是不需要处理UI的内容.
Kotlin 协程中,关于 runBlocking, launch ,withContext ,async,doAsync 之间的简单区别
引入大佬的话,Kotlin的协程,本质上是一个线程框架,它可以方便的切换线程的上下文(如主线程切换到子线程/子线程切回主线程)。而平时我们要想在Android Studio使用协程,先要在gradle引入协程依赖: implementation "org.jetbrains.kotlinx:kotlinxcoroutinescore:1.3.3"
JAVA回调机制(CallBack)之小红是怎样买到房子的??
JAVA回调机制CallBack 序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按
【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!
JMeter5.4.1源码IDEA构建&二次开发(实战) 1.下载源码 2.导入IDEA 2.1 先设置Gradle目录未设置过Gradle的IDEA,建议先设置下Gradle的用户目录 2.2导入JMeter工程 2.3设置国内Gradle源 设置gradle的下载源速度直接起飞!😂重新加载Gradle,或者重新加载项目接下来就是耐心的等等待,网速好的话,