java与Groovy的互调用 实现在当前目录及其子目录删除指定名称的目录

来源:互联网 发布:2017网络灰色赚钱项目 编辑:程序博客网 时间:2024/04/30 06:02

TestInterface.java

package com.huawei;import java.util.List;public interface TestInterface {public abstract List<String> getDirPaths(String name);}


RecursiveDelFile.groovy

package com.huawei;/** * groovy实现java定义的接口 * @author Administrator * */public class RecursiveDelFile implements TestInterface{/*  * 找到当前目录及其子目录中名字等于name的目录的绝对路径列表 * @see com.huawei.TestInterface#deleteDirPaths(java.lang.String) * @return 绝对路径列表 */public List<String> getDirPaths(String name) {List<String> result = new ArrayList<String>()new File('.').eachFileRecurse {if(it.getName().equalsIgnoreCase(name)) {println "delete "+ it.getCanonicalPath()result.add(it.getCanonicalPath())}}return result}}


Target.java

package com.huawei;import groovy.lang.GroovyClassLoader;import java.io.File;import java.util.List;/** * java调用groovy定义的方法获取当前目录下指定名字的目录列表 * 并全部删除 * @author Administrator * */public class Target {public static void main(String[] args) {ClassLoader cl = new Target().getClass().getClassLoader();GroovyClassLoader groovyCl = new GroovyClassLoader(cl);try {Class groovyClass = groovyCl.parseClass(new File("src/com/huawei/RecursiveDelFile.groovy"));TestInterface bo = (TestInterface) groovyClass.newInstance();//删除当前目录及其子目录下名字为target(不区分大小写)的目录List<String> deletePaths = bo.getDirPaths("target");for(String path : deletePaths){    FileUtils.deleteDirectory(path);}} catch (Exception e) {e.printStackTrace();}}}

FileUtils.java

package com.huawei;import java.io.File;/** * 文件工具类 * 实现了删除目录和文件的方法 * @author Administrator * */public final class FileUtils {public static boolean deleteDirectory(String sPath) {boolean flag = false;// 如果sPath不以文件分隔符结尾,自动添加文件分隔符if (!sPath.endsWith(File.separator)) {sPath = sPath + File.separator;}File dirFile = new File(sPath);// 如果dir对应的文件不存在,或者不是一个目录,则退出if (!dirFile.exists() || !dirFile.isDirectory()) {return false;}flag = true;// 删除文件夹下的所有文件(包括子目录)File[] files = dirFile.listFiles();for (int i = 0; i < files.length; i++) {// 删除子文件if (files[i].isFile()) {flag = deleteFile(files[i].getAbsolutePath());if (!flag)break;} // 删除子目录else {flag = deleteDirectory(files[i].getAbsolutePath());if (!flag)break;}}if (!flag)return false;// 删除当前目录if (dirFile.delete()) {return true;} else {return false;}}public static boolean deleteFile(String path) {// 如果Path不以文件分隔符结尾,自动添加文件分隔符if (!path.endsWith(File.separator)) {path = path + File.separator;}File dirFile = new File(path);// 如果dir对应的文件不存在,或者不是一个文件,则退出if (!dirFile.exists() || !dirFile.isFile()) {return false;}return dirFile.delete();}}


0 0
原创粉丝点击