我离开上家公司的时候,带走了以前在公司开发用到的文档和工程代码,发现整个一套下来有接近20个G的容量,发现其中很大一部分是svn的版本记录,就是.svn文件夹。因为已经离开了上家公司,所以这些svn版本管理信息就没必要放在那占用空间,上网查询下是否有现成的工具去删除svn文件夹,发现如果是linux的话还好办直接通过控制台shell命令就可以删除,但是windows的话需要改注册表增加一个鼠标右击菜单选项来执行删除操作,因为我们删除svn这种事情很少执行,没必要为了一次删除增加右击菜单选项,而且执行完了还需要删除这个选项,操作比较麻烦,所以自己通过java写了一个删除指定目录下指定文件名的类,发现删除后20g空间变成10g左右,而且执行速度比较快,比我们直接删除还清理垃圾站效率高,所以拿出了给大家分享一下。
java文件如下
package jdj.util;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Properties;public class DeleteSVN { private static Integer i = 0; private static String fileName; private static String deleteFileName; static{ Properties properties = new Properties(); try { //从配置文件读取删除路径和删除文件名 String proFileName = DeleteSVN.class.getClassLoader().getResource("delete.properties").getPath(); FileInputStream fis = new FileInputStream(proFileName); properties.load(fis); fileName = properties.getProperty("fileName"); deleteFileName = properties.getProperty("deleteFileName"); } catch (IOException e) { e.printStackTrace(); } } /** * 用于执行删除文件,递归调用 * @author jiang * 日期: 2011-12-06 * @param fileName 删除文件的路径 */ public static void deleteSvn(String fileName){ File svnFile = new File(fileName); if(svnFile.isDirectory()){ File[] svnFiles = {}; try { svnFiles =svnFile.listFiles(); } catch (Exception e) { System.out.println(svnFile.getPath()); } if(svnFiles!=null&&svnFiles.length>0){ for(File file:svnFiles){ if(deleteFileName.equals(file.getName())){ deleteSubFiles(file); boolean flag = file.delete(); if(flag){ synchronized (i) { i++; System.out.println("删除文件个数为:"+i+",文件名为:"+file.getPath()); } } } if(file.isDirectory()){ deleteSvn(file.getPath()); } } } } } public static void deleteSvn(){ deleteSvn(fileName); } /** * 用于执行删除文件夹下面的东西,递归调用 * @author jiang * 日期: 2011-12-06 * @param file 要删除文件 */ public static void deleteSubFiles(File file){ for(File subFile:file.listFiles()){ if(!subFile.isDirectory()){ subFile.delete(); }else{ deleteSubFiles(subFile); subFile.delete(); } } } public static void main(String[] args) { DeleteSVN.deleteSvn(); System.out.println("删除文件个数为:"+DeleteSVN.i); }}
delete.properties文件有如下内容
fileName=H:deleteFileName=.svn