您的位置:首页 > 运维架构 > 网站架构

.net文件操作:递归读取网站目录及子目录和文件并显示

2010-09-04 15:00 375 查看
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Net;
using System.Text;
/// <summary>
///FilesOper 的摘要说明
/// </summary>
public class FilesOper
{
public static DataTable dt = new DataTable();
//添加列
// public static DataColumn ID = new DataColumn("ID", typeof(int));
public static DataColumn Title = new DataColumn("Title", typeof(string));
public static DataColumn ParentID = new DataColumn("ParentID", typeof(int));
public static DataColumn ChildID = new DataColumn("ChildID", typeof(int));
public static string strHref = "";
public static DataRow row;
static FilesOper()
{
//dt.Columns.Add(ID);
dt.Columns.Add(Title);
dt.Columns.Add(ParentID);
dt.Columns.Add(ChildID);
}
#region 获取指定文件夹下所有子目录及文件(树形)
/****************************************
* 函数名称: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)
{
string _name = string.Empty;
if (nLevel == 0)
{
Rn += "┣";
}
else
{
string _s = "";
for (int i = 1; i <= nLevel; i++)
{
_s += "│ ";
}
Rn += _s + "├";
}
_name = dirinfo.Name;
string sC = "";
DirectoryInfo d = theDir;
for (int i = 0; i < nLevel - 1; i++)
{
d = d.Parent;
sC = d.Name + "/" + sC;
}
if (nLevel > 0)
{
sC += theDir.Name+"/";
}
string ftpname = sC + dirinfo.Name.ToString();//则为扫描子目录但不可扫描主目录;
Rn += "<b><a href='index.aspx?fname=" + ftpname.ToString() + "' style='text-decoration:none'>" + dirinfo.Name.ToString() + "</b><br/>";
FileInfo[] fileInfo = dirinfo.GetFiles(); //目录下的文件
foreach (FileInfo fInfo in fileInfo)
{
row = dt.NewRow();
if (nLevel == 0)
{
Rn += "│ ├";
}
else
{
string _f = "";
for (int i = 1; i <= nLevel; i++)
{
_f += "│ ";
}
Rn += _f + "│ ├";
}
//string childfilename= fInfo.Name.ToString();
//获取二级文件夹
sC = "";
d = theDir;
for (int i = 0; i < nLevel - 1; i++)
{
d = d.Parent;
sC = d.Name + "/" + sC;
}
if (nLevel > 0)
{
sC += theDir.Name + "/";
}
string childfilename = sC + dirinfo.Name.ToString() + "/" + fInfo.Name.ToString();
string spt = Path.GetFullPath(childfilename.ToString());
Rn += "<a href='index.aspx?fname=" + childfilename + "' style='text-decoration:none'>" + 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;

}
#endregion
public static string GetFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] aa = di.GetFiles();
string sp = "";
for (int i = 0; i < aa.Length; i++)
{
sp = aa[i].FullName.ToString() + "<br/>"; ;
}
return sp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐