博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Groovy快速入门-12-Groovy如何读文件内容和写入文件
阅读量:4302 次
发布时间:2019-05-27

本文共 3665 字,大约阅读时间需要 12 分钟。

文件读写操作,在编程中经常需要去写的代码,同样在pipeline代码中,一些测试验证的代码也需要去读文件来判断下一步的动作,本篇来介绍如何读文件的groovy代码。然后简单介绍如何写入文件,写入文件比较简单。

 

1.数据准备

为了演示读文件,我在groovy项目根目录下,新建一个Data.txt的文件,内容如下。

在计算机科学中,闭包(英语:Closure),又稱词法闭包(Lexical Closure)或函數閉包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

准备工作就好了,开始用groovy来以各种方式去读文件内容。

 

2.以字符串方式读取

package com.anthony.demo// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 以字符串方式全部读取println file.text

打印结果

在计算机科学中,闭包(英语:Closure),又稱词法闭包(Lexical Closure)或函數閉包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

3.读取到list容器中

package com.anthony.demo// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 读取到listdef list = file.collect { it }println list

打印效果是 [xxx这些内容]

 

4.读取到字符串数组中

package com.anthony.demo// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 读取到数组def arr = file as String[]println arr

 

5.一行一行读取

5.1 每行读取到一个list

package com.anthony.demo// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 每行读取到一个list中def list = file.readLines()println list

5.2 一行一行读取,一行是String

package com.anthony.demo// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 一行一行读取file.eachLine {line ->	println line}

 

6.二进制文件读取

有些文件是只能通过二进制读取,例如图片,音频等

// 文件位置def filePath = "Data.txt"File file = new File(filePath)// 二进制文件读取def byte[] contents = file.bytesprintln contents

读取效果

[-44, -38, -68, -58, -53, -29, -69, -6, -65, -58, -47, -89, -42, -48, -93, -84, -79, -43, -80, -4, -93, -88, -45, -94, -45, -17, -93, -70, 67, 108, 111, 115, 117, 114, 101, -93, -87, -93, -84, 13, 10, -45, -42, -73, 81, -76, -54, -73, -88, -79, -43, -80, -4, -93, -88, 76, 101, 120, 105, 99, 97, 108, 32, 67, 108, 111, 115, 117, 114, 101, -93, -87, 13, 10, -69, -14, -70, -81, -108, -75, -23, 93, -80, -4, -93, -88, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 108, 111, 115, 117, 114, 101, 115, -93, -87, -93, -84, 13, 10, -54, -57, -46, -3, -45, -61, -63, -53, -41, -44, -45, -55, -79, -28, -63, -65, -75, -60, -70, -81, -54, -3, -95, -93, 13, 10, -43, -30, -72, -10, -79, -69, -46, -3, -45, -61, -75, -60, -41, -44, -45, -55, -79, -28, -63, -65, -67, -85, -70, -51, -43, -30, -72, -10, -70, -81, -54, -3, -46, -69, -51, -84, -76, -26, -44, -38, -93, -84, 13, 10, -68, -76, -54, -71, -46, -47, -66, -83, -64, -21, -65, -86, -63, -53, -76, -76, -44, -20, -53, -4, -75, -60, -69, -73, -66, -77, -46, -78, -78, -69, -64, -3, -51, -30, -95, -93, 13, 10, -53, -7, -46, -44, -93, -84, -45, -48, -63, -19, -46, -69, -42, -42, -53, -75, -73, -88, -56, -49, -50, -86, -79, -43, -80, -4, -54, -57, -45, -55, -70, -81, -54, -3, -70, -51, -45, -21, -58, -28, -49, -32, -71, -40, -75, -60, 13, 10, -46, -3, -45, -61, -69, -73, -66, -77, -41, -23, -70, -49, -74, -8, -77, -55, -75, -60, -54, -75, -52, -27, -95, -93]

7.写入文件

先来看看,写入两行内容到一个文件。

package com.anthony.demo// 文件位置def filePath = "Data1.txt"File file = new File(filePath)// 写入文件file.write("This is line1")file << "\nThis is line2"println file.text

会写入两行内容,如果接着运行下面代码,会清空上面两行再写入新的内容

package com.anthony.demo// 文件位置def filePath = "Data1.txt"File file = new File(filePath)// 写入文件file.write("This is line1")file << "\nThis is line2"file.text = "This is line3"println file.text

所以,如果要使用file.text="xxx"的时候,一定要想好是不是要覆盖前面已存在的内容。

如果不想覆盖,就用append方法

package com.anthony.demo// 文件位置def filePath = "Data1.txt"File file = new File(filePath)// 写入文件file.write("This is line1")file << "\nThis is line2"file.append("\nThis is line3")println file.text

Groovy的入门教程暂时更新到这里,后面的知识是OOP,也就是类和对象以及继承,接口等知识。就我所知,在CI CD pipeline中,我们使用groovy语法有了这些内容是足够,这些groovy语法加上jenkins上pipeline的语法和插件提供的那些方法,足以支撑你完成相关pipeline代码的编写。

转载地址:http://zjows.baihongyu.com/

你可能感兴趣的文章
MFC中CString和int的转换
查看>>
退出MFC应用程序的方法集
查看>>
C/C++中如何获取数组的长度?
查看>>
VS2010 MFC中控件、对话框等背景颜色动态修改的方法
查看>>
MFC启动和关闭线程
查看>>
MFC绘制动态曲线,用双缓冲绘图技术防闪烁
查看>>
MFC SetWindowPos
查看>>
C++虚函数表,虚表指针,内存分布
查看>>
c++中.dll与.lib文件的生成与使用的详解
查看>>
CyAPI.lib(CyAPI.obj) : error LNK2019: 无法解析的外部符号...
查看>>
在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include &quot;StdAfx.h&quot;”?
查看>>
DeleteDC() 与 ReleaseDC() 的区别 [转]
查看>>
WinHand.cpp Line 199 错误 WinHand.cpp Line 218 错误
查看>>
GDI对象和CDC的使用方法(防止资源泄漏)
查看>>
MFC中的DC,CDC和HDC
查看>>
MFC 自定义消息四步曲与在参数中传递变量
查看>>
MFC多线程各种线程用法 .
查看>>
安全终止MFC线程全
查看>>
C++框架_之Qt的信号和槽的详解
查看>>
QT信号和槽
查看>>