public StringBuilder TraversingCatalog(StringBuilder strb, string path)
{
if (Directory.Exists(path) == false)
{ return strb; }
else
{
DirectoryInfo dirInfo = new DirectoryInfo(path);
int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
if (allNum != 0) //没有任何文件夹和文件就建立"(空白)"节点并返回false
{
//循环文件夹(避免混乱,先循环文件夹)
foreach (DirectoryInfo folder in dirInfo.GetDirectories())
{
if (GetFilesCount(folder) > 0)//检查检查该文件下是否存在文件与文件夹下所有子文件夹是否存在文件
{
strb.AppendFormat("<ul><li id=\"" + folder.FullName.ToString() + "\" data-options=\"state:\'closed\'\"><span>{0}</span>", folder.Name); //得到文件夹名
TraversingCatalog(strb, path + "\\" + folder.Name); //递归遍历其它文件夹
//循环文件
strb.AppendFormat("</li></ul>");
}
}
if (dirInfo.GetFiles("*.*").Length > 0)
{
strb.AppendFormat("<ul>");
}
foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件
{
strb.AppendFormat("<li id=\"" + file.FullName.ToString() + "\"><span>{0}</span></li>", file.Name);
}
if (dirInfo.GetFiles("*.*").Length > 0)
{
strb.AppendFormat("</ul>");
}
return strb;
}
return strb;
}
}
public static int GetFilesCount(DirectoryInfo dirInfo)
{
int totalFile = 0;
totalFile += dirInfo.GetFiles().Length;//获取全部文件
//totalFile += dirInfo.GetFiles("*.txt").Length;//获取某种格式
foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
{
totalFile += GetFilesCount(subdir);
if (totalFile>0)//直接查看文件的数量是否大于0,若大于则表示该文件夹下存在文件,直接输出1即可
{
break;
}
}
return totalFile;//若totalFile=0 表示该文件夹下不存在文件
}