📅  最后修改于: 2020-11-04 06:37:57             🧑  作者: Mango
在使用I / O时,Groovy提供了许多辅助方法。 Groovy提供了更简单的类来为文件提供以下功能。
除此之外,您始终可以将下面列出的常规Java类用于文件I / O操作。
下面的示例将在Groovy中输出文本文件的所有行。 Groovy的File类中内置了eachLine方法,目的是确保读取文本文件的每一行。
import java.io.File
class Example {
static void main(String[] args) {
new File("E:/Example.txt").eachLine {
line -> println "line : $line";
}
}
}
File类用于实例化一个新对象,该对象将文件名作为参数。然后,它将采用eachLine的函数,将其放入一个名为line的变量,并进行相应打印。
如果文件包含以下行,则将打印它们。
line : Example1
line : Example2
如果要以字符串获取文件的全部内容,则可以使用文件类的text属性。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println file.text
}
}
如果文件包含以下行,则将打印它们。
line : Example1
line : Example2
如果要写入文件,则需要使用writer类将文本输出到文件。以下示例显示了如何完成此操作。
import java.io.File
class Example {
static void main(String[] args) {
new File('E:/','Example.txt').withWriter('utf-8') {
writer -> writer.writeLine 'Hello World'
}
}
}
如果打开文件Example.txt,将在文件上看到“ Hello World”字样。
如果要获取文件的大小,可以使用文件类的length属性来获取文件的大小。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println "The file ${file.absolutePath} has ${file.length()} bytes"
}
}
上面的代码将显示文件大小(以字节为单位)。
如果要查看路径是文件还是目录,可以使用File类的isFile和isDirectory选项。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
def file = new File('E:/')
println "File? ${file.isFile()}"
println "Directory? ${file.isDirectory()}"
}
}
上面的代码将显示以下输出-
File? false
Directory? True
如果要创建新目录,可以使用File类的mkdir函数。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
def file = new File('E:/Directory')
file.mkdir()
}
}
如果目录E:\ Directory不存在,则将创建它。
如果要删除文件,可以使用File类的删除函数。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
def file = new File('E:/Example.txt')
file.delete()
}
}
该文件将被删除(如果存在)。
Groovy还提供了将内容从一个文件复制到另一个文件的功能。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
def src = new File("E:/Example.txt")
def dst = new File("E:/Example1.txt")
dst << src.text
}
}
将创建文件Example1.txt,并将文件Example.txt的所有内容复制到该文件。
Groovy还提供了列出驱动器和驱动器中文件的功能。
下面的示例演示如何使用File类的listRoots函数显示计算机上的驱动器。
class Example {
static void main(String[] args) {
def rootFiles = new File("test").listRoots()
rootFiles.each {
file -> println file.absolutePath
}
}
}
根据计算机上可用的驱动器,输出可能会有所不同。在标准机器上,输出将类似于以下内容-
C:\
D:\
下面的示例演示如何使用File类的eachFile函数列出特定目录中的文件。
class Example {
static void main(String[] args) {
new File("E:/Temp").eachFile() {
file->println file.getAbsolutePath()
}
}
}
输出将显示目录E:\ Temp中的所有文件
如果要递归显示目录及其子目录中的所有文件,则可以使用File类的eachFileRecurse函数。以下示例显示了如何完成此操作。
class Example {
static void main(String[] args) {
new File("E:/temp").eachFileRecurse() {
file -> println file.getAbsolutePath()
}
}
}
输出将显示目录E:\ Temp及其子目录(如果存在)中的所有文件。