class FileUtils{ /** * remove the target file or directory. * @param src the full path of the target file * @return true if the file or directory is successfully removed; false otherwise. */ static void rm(String src) { rm(src, null); } static void rmBySuffix(String path, String suffix) { rm(path, { it.endsWith(suffix) }) } static def rm(String src, Closure filter) { iterator(src, filter, { path -> rm(path, filter) }, { file -> file.delete() }); } static def cp(String src, String dsc) { def srcFile = new File(src); assert src != dsc; assert new File(srcFile).exists(); new File(dsc).setBytes(srcFile.getBytes()); } static def mv(String from, String to) { cp(from, to); rm(from); } static def mergeTo(String from, def to, Closure filter) { def toFile = to; if (to instanceof String) { toFile = new File(to); } iterator(from, filter, { mergeTo(it, toFile, filter) }, { toFile.append(it.getBytes()) }); } private static void iterator(String src, Closure filter, Closure directoryAction, Closure fileAction) { def file = new File(src); assert file.exists(); if (file.isDirectory()) { file.eachFile { directoryAction.call(it.getAbsolutePath()); } } if ((!filter) || filter.call(src)) { fileAction.call(file); } } }
def src = "c:/test.txt"; def dsc = "d:/test.txt"; //FileUtils.cp(src, dsc) //FileUtils.rmBySuffix("E:/workspace/groovy/src", "class") //FileUtils.mergeTo("c:/test/cc.txt", "d:/result.txt",{String path->path.endsWith("txt")}); //FileUtils.mergeTo("c:/test", "d:/result.txt",{String path->path.endsWith("txt")}); Utils.rmBySuffix("E:/workspace/groovy/src","class")
作为脚本语言,groovy对java的文件操作进行了扩展,利用这些扩展与脚本语言的灵活性,可以很方便的帮助我们快速编写工作脚本与批处理脚本。