public  string strRootDir = ConfigurationSettings.AppSettings["strRootDir"];
public void DeleteFolder(string strDir)
{
//delete the folder
string strPath=Server.MapPath(strRootDir);
string str_a=strDir;
string strDir1=strPath+str_a;
if (Directory.Exists(strDir1))
{
string[] arrayFolder=System.IO.Directory.GetFileSystemEntries(strDir1);
for (int i=0;i<arrayFolder.Length;i++)
{
if (GetStrCount(arrayFolder[i],".")>0)
{
System.IO.File.SetAttributes(arrayFolder[i],System.IO.FileAttributes.Normal);
System.IO.File.Delete(arrayFolder[i]);
}
else
{
    //if(arrayFolder[i]!=mappath+"")
DeleteFolder(arrayFolder[i]);
}
}
System.IO.Directory.Delete(strDir1);

}

解决方案 »

  1.   

    1. if (GetStrCount(arrayFolder[i],".")>0) 不一定就能判断是否为文件。
    2. System.IO.Directory.GetFileSystemEntries 获取的是FullPath,你再次递归时与string strPath=Server.MapPath(strRootDir); string str_a=strDir;string strDir1=strPath+str_a;在错了
      

  2.   

    对与问题1,你可以使用Directory的GetDirectories和GetFiles来获取对于问题2,请在外部计算完要删除的文件夹的FullPath.
      

  3.   

    这种包含子目录之类的问题用directioryinfo类很容易解决的
    直接用delete方法就行