C#两种方式获取指定文件夹下所有子目录及文件

 /**************************************** 
* 函数名称:GetFoldAll(string Path)
* 功能说明:获取指定文件夹下所有子目录及文件(树形)
* 参 数:Path:详细路径
* 调用示列:
* string strDirlist = Server.MapPath("templates");
* this.Literal1.Text = EC.FileObj.GetFoldAll(strDirlist);
****************************************
*/
/// <summary>
/// 获取指定文件夹下所有子目录及文件
/// </summary>
/// <param name="Path">详细路径</param>
public static string GetFoldAll(string Path)
{
string str = "";
DirectoryInfo thisOne
= new DirectoryInfo(Path);
str
= ListTreeShow(thisOne, 0, str);
return str;
}
/// <summary>
/// 获取指定文件夹下所有子目录及文件函数
/// </summary>
/// <param name="theDir">指定目录</param>
/// <param name="nLevel">默认起始值,调用时,一般为0</param>
/// <param name="Rn">用于迭加的传入值,一般为空</param>
/// <returns></returns>
public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn)//递归目录 文件
{
DirectoryInfo[] subDirectories
= theDir.GetDirectories();//获得目录
foreach (DirectoryInfo dirinfo in subDirectories)
{
if (nLevel == 0)
{
Rn
+= "";
}
else
{
string _s = "";
for (int i = 1; i <= nLevel; i++)
{
_s
+= "";
}
Rn
+= _s + "";
}
Rn
+= "<b>" + dirinfo.Name.ToString() + "</b><br />";
FileInfo[] fileInfo
= dirinfo.GetFiles(); //目录下的文件
foreach (FileInfo fInfo in fileInfo)
{
if (nLevel == 0)
{
Rn
+= "│ ├";
}
else
{
string _f = "";
for (int i = 1; i <= nLevel; i++)
{
_f
+= "";
}
Rn
+= _f + "│ ├";
}
Rn
+= fInfo.Name.ToString() + " <br />";
}
Rn
= ListTreeShow(dirinfo, nLevel + 1, Rn);
}
return Rn;
}
/****************************************
* 函数名称:GetFoldAll(string Path)
* 功能说明:获取指定文件夹下所有子目录及文件(下拉框形)
* 参 数:Path:详细路径
* 调用示列:
* string strDirlist = Server.MapPath("templates");
* this.Literal2.Text = EC.FileObj.GetFoldAll(strDirlist,"tpl","");
****************************************
*/
/// <summary>
/// 获取指定文件夹下所有子目录及文件(下拉框形)
/// </summary>
/// <param name="Path">详细路径</param>
///<param name="DropName">下拉列表名称</param>
///<param name="tplPath">默认选择模板名称</param>
public static string GetFoldAll(string Path, string DropName, string tplPath)
{
string strDrop = "<select name=\"" + DropName + "\" id=\"" + DropName + "\"><option value=\"\">--请选择详细模板--</option>";
string str = "";
DirectoryInfo thisOne
= new DirectoryInfo(Path);
str
= ListTreeShow(thisOne, 0, str, tplPath);
return strDrop + str + "</select>";
}
/// <summary>
/// 获取指定文件夹下所有子目录及文件函数
/// </summary>
/// <param name="theDir">指定目录</param>
/// <param name="nLevel">默认起始值,调用时,一般为0</param>
/// <param name="Rn">用于迭加的传入值,一般为空</param>
/// <param name="tplPath">默认选择模板名称</param>
/// <returns></returns>
public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn, string tplPath)//递归目录 文件
{
DirectoryInfo[] subDirectories
= theDir.GetDirectories();//获得目录
foreach (DirectoryInfo dirinfo in subDirectories)
{
Rn
+= "<option value=\"" + dirinfo.Name.ToString() + "\"";
if (tplPath.ToLower() == dirinfo.Name.ToString().ToLower())
{
Rn
+= " selected ";
}
Rn
+= ">";
if (nLevel == 0)
{
Rn
+= "";
}
else
{
string _s = "";
for (int i = 1; i <= nLevel; i++)
{
_s
+= "";
}
Rn
+= _s + "";
}
Rn
+= "" + dirinfo.Name.ToString() + "</option>";
FileInfo[] fileInfo
= dirinfo.GetFiles(); //目录下的文件
foreach (FileInfo fInfo in fileInfo)
{
Rn
+= "<option value=\"" + dirinfo.Name.ToString() + "/" + fInfo.Name.ToString() + "\"";
if (tplPath.ToLower() == fInfo.Name.ToString().ToLower())
{
Rn
+= " selected ";
}
Rn
+= ">";
if (nLevel == 0)
{
Rn
+= "│ ├";
}
else
{
string _f = "";
for (int i = 1; i <= nLevel; i++)
{
_f
+= "";
}
Rn
+= _f + "│ ├";
}
Rn
+= fInfo.Name.ToString() + "</option>";
}
Rn
= ListTreeShow(dirinfo, nLevel + 1, Rn, tplPath);
}
return Rn;
}

  

posted @ 2011-08-30 17:18  许明吉博客  阅读(7306)  评论(0编辑  收藏  举报