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;
}
}
}
转载于:https://blog.51cto.com/haigejava/1315739