在工作开发过程中,每次用SVN提交代码全选择的时候,发现会产生很多不需要的文件后缀垃圾文件,感觉挺烦人的,一个一个删太麻烦了,如果产生多种后缀文件时,那删起来多费劲,是吧?想想,就写了一段程序通过递归进行处理,虽然网上有很多这样的代码,但是我感觉都有问题,网上的代码很多都需要拿过来执行一下才知道有没有问题,如果是多层目录结构的时候,会把你的相同文件名称也干掉,而我写的这个即使是需要删除的文件后缀名称跟文件名一样都不会删掉。每次提交之前我都执行一下再提交,这样就不会有哪些不需要的后缀文件了。这个还是比较实用,分享给大家,希望能让更多的人,提高开发效率。
package test; import java.io.File; import java.util.ArrayList; import java.util.List; public class SweepUnusedFiles { public static void main(String[] args) { String filedir = "F:\某个目录下"; List<String> suffixList = new ArrayList<String>(); suffixList.add(".db"); // suffixList.add(".tmp"); // suffixList.add(".html_zh"); // suffixList.add("_zh.js"); SweepUnusedFiles sweepUnusedFiles = new SweepUnusedFiles(); sweepUnusedFiles.startDeleteFixedFiles(filedir, suffixList); System.out.println("执行完成!"); } public void startDeleteFixedFiles(String filedir, List<String> suffixList) { if (null == filedir || "".equals(filedir.trim())) { System.out.println("filedir 目录不对!"); return; } filedir = filedir.trim(); if (null == suffixList || suffixList.size() <= 0) { System.out.println("suffixList 没有要匹配的后缀!"); return; } File f = new File(filedir); if (f.isDirectory()) { handleFile(f, suffixList); } else { System.out.println("filedir 必须为目录"); /* for (String suffix : suffixList) { if (f.getName().endsWith(suffix)) { // 匹配到的要删除 try { f.delete(); } * catch (Exception e) { System.out.println("文件删除失败:" + f.getAbsolutePath() + "\" + f.getName()); } } } */ } } private void handleFile(File filedir, List<String> suffixList) { // 目录 File[] files = filedir.listFiles(); for (File subFile : files) { if (subFile.isDirectory()) { handleFile(subFile, suffixList); } else { // 文件 for (String suffix : suffixList) { if (subFile.getName().endsWith(suffix)) { // 匹配到的要删除 try { subFile.delete(); System.out.println("已删除文件:" + subFile.getAbsolutePath() + "\" + subFile.getName()); } catch (Exception e) { System.out.println("文件删除失败:" + subFile.getAbsolutePath() + "\" + subFile.getName()); } } } } } } }
ps: 请看效果