import java.io.*;

import java.util.*;



public class DeleteSVN {


/**

* @param args

*/

public static void main(String[] args) {

System.out.println("请输入要清除.svn的根目录:");

Scanner in=new Scanner(System.in);

String fileDir=in.next();

File dir = new File(fileDir);

DeleteSVN d = new DeleteSVN() ;

d.deleteSvn(dir);

System.out.println("删除完成");

}

/** 其实删除的整个过程就是寻找.svn目录的过程,不需要管单个文件 */

public void deleteSvn(File file){

/** 是目录的进来 */

if(file.isDirectory()){

/** 是.svn全部删除 */

if(file.getName().equals(".svn")){

System.out.println("删除:"+file.getPath());

this.delete(file.getPath());

}else{

File[] files = file.listFiles();

for (int i = 0; i < files.length; i++) {

if(files[i].isDirectory()){

/** 是目录的话,递归 */

this.deleteSvn(files[i]);

}

}

}

}

}

/**

* 删除文件,可以是单个文件或文件夹

* @param fileName 待删除的路径

* @return 文件删除成功返回true,否则返回false

*/

public boolean delete(String fileName){

//System.out.println("删除文件:"+fileName);

File file = new File(fileName);

if(!file.exists()){

// 路径不存在

return false;

}else{

// 路径存在并且是文件

if(file.isFile()){

return deleteFile(fileName);

// 路径存在并且是目录

}else{

return deleteDirectory(fileName);

}

}

}


/**

* 删除单个文件

* @param fileName 被删除文件的路径

* @return 单个文件删除成功返回true,否则返回false

*/

public boolean deleteFile(String fileName){

File file = new File(fileName);

if(file.isFile() && file.exists()){

file.delete();

//System.out.println("删除单个文件"+fileName+"成功!");

return true;

}else{

//System.out.println("删除单个文件"+fileName+"失败!");

return false;

}

}


/**

* 删除目录(文件夹)以及目录下的文件

* @param dir 被删除目录的文件路径

* @return 目录删除成功返回true,否则返回false

*/

public boolean deleteDirectory(String dir){

//如果dir不以文件分隔符结尾,自动添加文件分隔符

if(!dir.endsWith(File.separator)){

dir = dir+File.separator;

}

File dirFile = new File(dir);

//如果dir对应的文件不存在,或者不是一个目录,则退出

if(!dirFile.exists() || !dirFile.isDirectory()){

System.out.println("删除目录失败"+dir+"目录不存在!");

return false;

}

boolean 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){

System.out.println("删除目录失败");

return false;

}


//删除当前目录

if(dirFile.delete()){

//System.out.println("删除目录"+dir+"成功!");

return true;

}else{

System.out.println("删除目录"+dir+"失败!");

return false;

}

}

}