文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>.net文件操作:递归读取网站目录及子目录和文件并显示

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

时间:2010-09-04  来源:天亮说晚安

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;
    }
}

相关阅读 更多 +
排行榜 更多 +
盒子小镇2游戏手机版下载

盒子小镇2游戏手机版下载

冒险解谜 下载
世界盒子模组版下载最新版本

世界盒子模组版下载最新版本

模拟经营 下载
音乐搜索app最新版本下载

音乐搜索app最新版本下载

趣味娱乐 下载