Groovy (文件I/O)

Groovy在使用I / O时提供了许多辅助方法,Groovy提供了更简单的类来为文件提供以下功能。

读取文件
写入文件
遍历文件树
读取和写入数据对象到文件
除此之外,您始终可以使用下面列出的用于文件I / O操作的标准Java类。

java.io.File
java.io.InputStream
java.io.OutputStream
java.io.Reader
java.io.Writer

读取文件

以下示例将输出Groovy中的文本文件的所有行。方法eachLine内置在Groovy中的File类中,目的是确保文本文件的每一行都被读取。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		new File("E:/Example.txt").eachLine {  
			line -> println "line : $line";
		}
	}
}

读取文件的内容到字符串

如果要将文件的整个内容作为字符串获取,可以使用文件类的text属性。以下示例显示如何完成此操作。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		File file = new File("E:/Example.txt");
		println file.text;
	}
}

写入文件

如果你想写入文件,你需要使用作家类输出文本到一个文件中。下面的例子说明了如何可以做到这一点。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		new File('E:/', 'Example.txt').withWriter('utf-8') {
			writer -> writer.writeLine("Hello klvchen");	
		}
	}
}

获取文件的大小

如果要获取文件的大小,可以使用文件类的length属性来获取,以下示例显示如何完成此操作。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		File file = new File('E:/Example.txt');
		println "The file ${file.absolutePath} has ${file.length()} bytes";
	}
}

测试文件是否是目录

如果要查看路径是文件还是目录,可以使用File类的isFile和isDirectory选项。以下示例显示如何完成此操作

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		def file = new File('E:/');
		println "File? ${file.isFile()}";
		println "Directory? ${file.isDirectory()}";
	}
}

创建目录

如果要创建一个新目录,可以使用File类的mkdir函数。以下示例显示如何完成此操作。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		def file = new File('E:/Directory');
		file.mkdir();
	}
}

如果目录E:\ Directory不存在,将创建它。

删除文件

如果要删除文件,可以使用File类的delete功能。以下示例显示如何完成此操作。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		def file = new File('E:/Example.txt');
		file.delete();
	}
}

如果存在该文件将被删除。

复制文件

Groovy还提供将内容从一个文件复制到另一个文件的功能。以下示例显示如何完成此操作。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	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函数显示机器上的驱动器。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		def rootFiles = new File("test").listRoots();
		rootFiles.each { 
			file -> println file.absolutePath;
		}
	}
}

根据机器上可用的驱动器,输出可能会有所不同。在标准机器上的输出将类似于下面的一个 -

使用File类的eachFile函数列出特定目录中的文件。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		new File("E:/tmp").eachFile(){
			file -> println file.getAbsolutePath();
		}
	}
}

输出将显示目录E\tmp中的所有文件

递归显示目录及其子目录中的所有文件

如果要递归显示目录及其子目录中的所有文件,则可以使用File类的eachFileRecurse函数。

package com.klvchen.test1

import java.io.File

class FileIoTest {
	static void main(String[] args) {
		new File("E:/tmp").eachFileRecurse(){
			file -> println file.getAbsolutePath();
		}
	}
}

posted @ 2021-03-08 15:45  klvchen  阅读(220)  评论(0)    收藏  举报