我有一个任务:
task myCopy(type: Copy) {
from 'from.txt'
into 'into.txt'
doLast {
//Read write 'into.txt'
}
}
它总是打印一个
FileNotFoundException
,我发现doLast
块是在复制操作完成之前执行的,所以复制操作完成后如何用into.file
读取(或写入)? 最佳答案
在这里,您没有以适当的方式使用“复制”任务:“into”属性是将文件复制到的目标目录,而不是目标文件名。
执行脚本时,您应该在项目的根目录中创建一个目录“input.txt”,并将文件“from.txt”复制到该目录中,这不是您所期望的,我想这是导致您FileNotFoundException。
如果要复制/重命名文件,则应使用CopyTask中的“重命名”方法,如下所述:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:rename(java.lang.String,%20java.lang.String)
范例:
task myCopy(type: Copy) {
from './source-file.txt'
into './output-dir'
rename ( 'source-file.txt', 'input.txt')
doLast{
println "Is file already copied when executing doLast ? ==> "+ project.file("./output-dir/input.txt").exists()
}
}
这应该输出:
$ gradle myCopy
> Task :myCopy
Is file already copied when executing doLast ? ==> true