Groovy在使用I / O时提供了许多辅助方法。 Groovy提供了更简单的类来为文件提供以下功能。
除此之外,您始终可以使用下面列出的用于文件I / O操作的标准Java类。
以下示例将输出Groovy中的文本文件的所有行。方法eachLine内置在Groovy中的File类中,目的是确保文本文件的每一行都被读取。
import java.io.File |
class Example { |
static void main(String[] args) { |
new File("E:/Example.txt").eachLine { |
line -> println "line : $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
如果你想写入文件,你需要使用作家类输出文本到一个文件中。下面的例子说明了如何可以做到这一点。
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函数。以下示例显示如何完成此操作。
如果目录E:\ Directory不存在,将创建它。
如果要删除文件,可以使用File类的delete功能。以下示例显示如何完成此操作。
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函数显示机器上的驱动器。
C:\ |
D:\ |
class Example { |
static void main(String[] args) { |
new File("E:/Temp").eachFile() { |
file->println file.getAbsolutePath() |
} |
} |
} |
如果要递归显示目录及其子目录中的所有文件,则可以使用File类的eachFileRecurse函数。以下示例显示如何完成此操作。
class Example { |
static void main(String[] args) { |
new File("E:/temp").eachFileRecurse() { |
file -> println file.getAbsolutePath() |
} |
} |
} |