一篇文章学会Groovy对文件的操作_groovy文件后缀

createh53个月前 (02-07)技术教程21

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 文件的内容如下:

     
         Java
         Groovy
         JavaScript
     
 */

//一行代码就解析了xml
def langs = new XmlParser().parse("test.xml")

//打印出node的属性
println langs.attribute('type')

//对xml文件的遍历
langs.each {
    println it.text()
}

//输出
current
Java
Groovy
JavaScript

相关文章

Java实现文件上传和下载的方法详解

Java实现文件上传和下载的方法详解,Java实现文件上传和下载解决方案,Java实现文件上传和下载思路,Java实现文件上传和下载源码,Java实现文件上传和下载实例,Java实现文件分块上传和下载...

java超简单系列课程——使用记事本写一个java程序

下一个知识点来讲如何使用记事本来开发一个java程序。先分为几个步骤。·第一个步骤先是编码过程。·第二个步骤要经过编译。编译就是把写的java代码,程序员能看懂的java代码翻译成电脑系统能够看懂的j...

java如何高效地读取一个超大文件?(四种方式分析对比)

前言我最近在优化我的PDF转word的开源小工具,有时候会遇到一个问题,就是如果我的PDF文件比较大,几百兆,如何更快更节省内存的读取它。于是我分析对比了四种常见的读取文件的方式,并使用javaVis...

Mybatis配置文件XML全貌详解,再不懂我也没招了

一、为什么要使用配置文件试想,如果没有配置文件,我们的应用程序将只能沿着固定的姿态运行,几乎不能做任何动态的调整,那么这不是一套完美的设计,因为我们希望拥有更宽更灵活的操作空间和更多的兼容度,同时也能...

Java堆栈文件生成和分析_java 堆栈

生成:jmap -dump:live,format=b,file=c:\heap.hprof 分析: jvisualvmHeapDump敏感信息提取工具 https://github.com/whwl...

Java 快速开发几 MB 独立 EXE,写图形界面很方便

aardio 可以支持很多编程语言, Java 就是其中之一。aardio + Java 可生成体积极小的独立 EXE 文件,可以内存加载 Java 编写的 class 文件,用 aardio + J...