我离开上家公司的时候,带走了以前在公司开发用到的文档和工程代码,发现整个一套下来有接近20个G的容量,发现其中很大一部分是svn的版本记录,就是.svn文件夹。因为已经离开了上家公司,所以这些svn版本管理信息就没必要放在那占用空间,上网查询下是否有现成的工具去删除svn文件夹,发现如果是linux的话还好办直接通过控制台shell命令就可以删除,但是windows的话需要改注册表增加一个鼠标右击菜单选项来执行删除操作,因为我们删除svn这种事情很少执行,没必要为了一次删除增加右击菜单选项,而且执行完了还需要删除这个选项,操作比较麻烦,所以自己通过java写了一个删除指定目录下指定文件名的类,发现删除后20g空间变成10g左右,而且执行速度比较快,比我们直接删除还清理垃圾站效率高,所以拿出了给大家分享一下。
package jdj.util;
import java.io.File;
public class DeleteSVN {
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
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