递归删除目录

      最近我在用svn,用过svn的朋友都知道,它会在每个目录下面添加 .svn隐藏文件。由于我的程序目录结构比较多,刚开始手动的删除.svn目录,删了一段时间,感觉比较慢,想为什么不写个程序,来帮助我来删除.svn目录呢。后来经过看一些资料,把程序写了出来。

      其实这个程序比较的简单,也对当前目录进行判断,如果含有指定的目录,则将该目录删除,没有的话,如果含有其他目录,然后进行递归操作。将含有指定的目录删除即可。代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace DirOper
ExpandedBlockStart.gifContractedBlock.gif
{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// 删除子目录
    
/// </summary>

    public class DelSubDir
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
private string _sourcePath; //操作的路径
        private string _delDirName; //删除的目录名称

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 删除目录所在的原始路径
        
/// </summary>

        public string SourcePath
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return this._sourcePath; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set this._sourcePath = value; }
        }


ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 进行删除的目录名称
        
/// </summary>

        public string DelDirName
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get return this._delDirName;}
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set this._delDirName = value; }
        }


ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 开始删除目录
        
/// </summary>

        public void DeleteDir()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            DirectoryInfo dirinfo 
= new DirectoryInfo(this.SourcePath);
            
this.ListDirectory(dirinfo);            
        }


ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 列出目录信息
        
/// </summary>
        
/// <param name="info">FileSystemInfo类</param>

        private void ListDirectory(FileSystemInfo info)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (!info.Exists)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(
"目标路径不正确,请重新输入!");
                
return;
            }

            DirectoryInfo dir 
= info as DirectoryInfo;
            
if (dir == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(
"目标路径不是一个目录!");
                
return;
            }


            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
this.ForeachDir(dir);
                Console.WriteLine(
"对目录 " + this.SourcePath + ",删除目录名称为:" + this.DelDirName + " ,操作完成!");
            }

            
catch(Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Console.WriteLine(ex.Message);
//抛出异常                
            }

        }


ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 递归遍历目录
        
/// </summary>
        
/// <param name="info">目录信息</param>

        private void ForeachDir(DirectoryInfo info)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
foreach (DirectoryInfo mydir in info.GetDirectories())
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (mydir.Name == this.DelDirName)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    mydir.Delete(
true);
                    Console.WriteLine(
"删除了文件:" + mydir.FullName);
                }

                
else
                    ForeachDir(mydir);
            }

        }

    }



    
public class client
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
public static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
//实例化类
            DelSubDir delDir = new DelSubDir();
            Console.Write(
"请输入要删除目录的目标路径");
            delDir.SourcePath 
= Console.ReadLine();
            Console.Write(
"请输入要删除在目标路径下要删除的目录名称");
            delDir.DelDirName 
= Console.ReadLine();

            
//执行删除操作
            delDir.DeleteDir();
        }

    }

}


下载源代码

转载于:https://www.cnblogs.com/striveman/archive/2009/11/17/1604545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值