【问题标题】:Copy and rename a File inside a DefaultTask Class?在 DefaultTask 类中复制和重命名文件?
【发布时间】:2015-04-10 08:11:48
【问题描述】:

我想复制我的 srcDir 中名称中包含 $$ 的所有文件。如果一个文件是例如:

x$$y.java

我想创建该文件的副本并将其命名为x$y.java

class MyTask extends DefaultTask {

@InputDirectory File srcDir

@TaskAction
def task() {
  def srcFiles = project.files(project.fileTree(dir: srcDir)).getFiles()
  srcFiles.each { file ->  
        if (file.name.contains("\$\$")) {
           // TODO copy file and rename it to the same name with one dollar sign in the middle

        }
  }
}
}

如何在自定义任务类中复制和重命名文件?

【问题讨论】:

    标签: java groovy gradle


    【解决方案1】:

    试试:

    @TaskAction
    def task() {
       project.copy {
          from(project.fileTree(dir: srcDir).files) {
             include {
               it.file.name.contains('$$')
             }
          }
          into('somewhere')
          rename { name ->
             name.replace('$$', '$')
          }
       }
    } 
    

    【讨论】:

    • @confile,刚刚更新了,现在更简单了。
    【解决方案2】:

    你可以使用Files类:

    if (file.name.contains("\$\$")) {
     // TODO copy file and rename it to the same name with one dollar sign in the middle
      String newFilePath = file.getParent()+"\\"+ "YOUR NEW File"; // use separator which you want  
      File newFile = new File(newFilePath);
      Files.copy(file.toPath(), newFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
    }
    

    更多选项请参见StandardCopyOption

    【讨论】:

    • 还有没有办法通过更多的 gradle 任务来做到这一点?
    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 2020-03-24
    • 2016-11-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多