相关文章
更多最近更新
更多Groovy 文件I/O 操作详解
2019-04-27 17:20|来源: 网路
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类中,目的是确保文本文件的每一行都被读取。
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
写入文件
如果你想写入文件,你需要使用作家类输出文本到一个文件中。下面的例子说明了如何可以做到这一点。
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类的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函数显示机器上的驱动器。
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中的所有文件及其子目录(如果存在)。
相关问答
更多-
如果要从构建中引用它(而不是在简单的Exec任务中),则需要将该类添加到buildSrc 。 鉴于这种目录结构: |-buildSrc | |- src | |- main | |- groovy | |- GroovyClass.groovy |- build.gradle GroovyClass.groovy在哪里: class GroovyClass { void foo() { println 'foo ...
-
使用Groovy插件添加原始.groovy文件以在Eclipse中输出目录(Add raw .groovy file to output dir in Eclipse with Groovy Plugin)[2023-10-22]
几年前我遇到了同样的事情。 Groovy插件将.groovy文件视为源文件。 .java文件不会放入输出目录,也不会放入.groovy文件。 当时我无法找到解决办法。 我不知道是否有解决办法,但我确实想出了一个解决方法。 我使用扩展名为.g的groovy文件,我想保留为脚本并在运行时解释它们。 这些将被groovy编译器跳过,并最终在输出目录中。 此外,通过这种方式,您可以混合编译的groovy(.groovy)和运行时解释的groovy文件(.g)。 **编辑**请参阅@Andrew Eisenberg的 ... -
Groovy“除了”语法?(Groovy “except” syntax?)[2022-03-20]
哇,本来希望快速回答这个问题! 好吧,找到了我自己的答案:除了以外你不能有多个例外。 请在此处查看功能请求 。 相反,他们建议创建一个过滤器。 看到这里 。 Wow, would have expected a quick answer on this! Well, found my own answer: you can't have more than one exception with except. See the feature request here. Instead, they recom ... -
关于什么 Ash.join().split("").tail() What about Ash.join().split("").tail()
-
Groovy ++的开发几年前就停止了,它的许多有趣功能都在Groovy中重新实现,包括@TypeChecked和@CompileStatic 。 Groovy现在比旧版本有了很大的改进。 每个版本都变得更快,并增加了更多的功能,而静态编译时,我们可以获得接近Java性能的表现,而且更少了Java的另类选择。 特性在这一点上并不新鲜,两年前它们被添加到了v2.3中,但它们真的变得流行起来,并在该语言中增加了另一个重要特性。 它们几乎和AST转换一样强大,但更容易处理。 Groovy in Action,第2 ...
-
5.each在Groovy解析器中优先于1..5 。 它的工作原理是因为它做了这样的事情: ret = 5.each { println it } range = 1..ret assert range == [1, 2, 3, 4, 5] each回报都是收集本身 5.each has priority over 1..5 in the Groovy parser. It works because it is doing something like this: ret = 5.each { prin ...
-
您正在Eclipse 3.6中运行用于Eclipse 3.5的Groovy-Eclipse,因此这就是它被破坏的原因。 我很惊讶您甚至可以安装它。 您需要安装Groovy-Eclipse for 3.6的快照版本。 仅限可用的viz zip文件: http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.6/ 下载存档并将p2安装程序指向zip。 您可以安装3.6 Groovy-Eclipse流。 然后格式化应该工作。 如果您仍然 ...
-
你需要选择自由式工作,然后你可以用旧的方式使用它 you need to choose freestyle job and then you can use it the old way
-
约瑟夫关于常规任务的声明+1(顺便说一句,他的博客http://josefbetancourt.wordpress.com/和http://octodecillion.com/值得一读) 为了多种目的使用groovy,在ant我专门使用groovy任务,因为他的灵活语法提供了对ant api的简单访问,请考虑以下示例:
Groovy与Groovyc(Groovy vs Groovyc)[2022-06-02]
Groovy是一种编译语言,但它允许您执行脚本。 像你一样调用groovy编译并运行脚本。 调用groovyc只会编译代码。 见: http : //www.javalobby.org/articles/groovy-intro1/ Groovy is a compiled language, but it allows you to execute scripts. Calling groovy like you did compiles and runs the script. Calling groo ...