网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

读取目录下所有目录和文件加载到TreeView

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

前段时间需要这个需求,于是乎 到网上查找到了资料.. 递归去读取 将此代码贴在此处 以备用

  1. protected void Page_Load(object sender, EventArgs e) 
  2.     { 
  3.         if (!IsPostBack) 
  4.         { 
  5.             string id = HttpContext.Current.Request["id"].ToString(); 
  6.             string path = System.Configuration.ConfigurationManager.AppSettings["UpPath"].ToString() + id;//+ "\\"; 
  7.             ViewState["path"] = System.Configuration.ConfigurationManager.AppSettings["UpPath"].ToString(); 
  8.             relateTreeView(TreeView1, path); 
  9.         } 
  10.     } 
  1. public void relateTreeView(TreeView tv, string path) 
  2.     { 
  3.  
  4.         tv.Nodes.Clear();                          //清空TreeView 
  5.         tv.Nodes.Add(new TreeNode());              //添加新节点 
  6.         string pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路径数组 
  7.  
  8.         #region //////////最上层目录里面 文件的数量 
  9.         DirectoryInfo di = new DirectoryInfo(path); 
  10.         int f = 0; 
  11.         if (di.GetFiles("*.*").Length > 0) 
  12.         { 
  13.             f = di.GetFiles("*.*").Length; 
  14.             foreach (var d in di.GetFiles("*.*")) 
  15.             { 
  16.                 //f1 += d.Name + "</br>"; 
  17.                 if (d.Name.Contains(".db")) 
  18.                 { 
  19.                     f--; 
  20.                 } 
  21.             } 
  22.         } 
  23.         #endregion 
  24.  
  25.         if (f != 0) 
  26.         { 
  27.             tv.Nodes[0].Text = "(" + f + ")" + pathinfo[pathinfo.Length - 1]; //得到文件夹名 
  28.         } 
  29.         else 
  30.         { 
  31.             tv.Nodes[0].Text = pathinfo[pathinfo.Length - 1]; 
  32.         } 
  33.  
  34.         tv.Nodes[0].Value = pathinfo[pathinfo.Length - 1];//path;                  //得到文件夹的详细本地路径 
  35.         tv.Nodes[0].Expanded = true;               //展开根节点  
  36.         tv.Nodes[0].ImageUrl = "images/directory.png"//根节点图片 
  37.         tv.Nodes[0].NavigateUrl = "../PicView/PicView.html?DirPath=" + Server.UrlEncode(pathinfo[pathinfo.Length - 1] + "\\"); 
  38.         TraversingCatalog(tv.Nodes[0], path);      //调用函数 
  39.  
  40.     } 
  1. public void relateTreeView(TreeView tv, string path) 
  2.     { 
  3.  
  4.         tv.Nodes.Clear();                          //清空TreeView 
  5.         tv.Nodes.Add(new TreeNode());              //添加新节点 
  6.         string pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路径数组 
  7.  
  8.         #region //////////最上层目录里面 文件的数量 
  9.         DirectoryInfo di = new DirectoryInfo(path); 
  10.         int f = 0; 
  11.         if (di.GetFiles("*.*").Length > 0) 
  12.         { 
  13.             f = di.GetFiles("*.*").Length; 
  14.             foreach (var d in di.GetFiles("*.*")) 
  15.             { 
  16.                 //f1 += d.Name + "</br>"; 
  17.                 if (d.Name.Contains(".db")) 
  18.                 { 
  19.                     f--; 
  20.                 } 
  21.             } 
  22.         } 
  23.         #endregion 
  24.  
  25.         if (f != 0) 
  26.         { 
  27.             tv.Nodes[0].Text = "(" + f + ")" + pathinfo[pathinfo.Length - 1]; //得到文件夹名 
  28.         } 
  29.         else 
  30.         { 
  31.             tv.Nodes[0].Text = pathinfo[pathinfo.Length - 1]; 
  32.         } 
  33.  
  34.         tv.Nodes[0].Value = pathinfo[pathinfo.Length - 1];//path;                  //得到文件夹的详细本地路径 
  35.         tv.Nodes[0].Expanded = true;               //展开根节点  
  36.         tv.Nodes[0].ImageUrl = "images/directory.png"//根节点图片 
  37.         tv.Nodes[0].NavigateUrl = "../PicView/PicView.html?DirPath=" + Server.UrlEncode(pathinfo[pathinfo.Length - 1] + "\\"); 
  38.         TraversingCatalog(tv.Nodes[0], path);      //调用函数 
  39.  
  40.     } 
  1. public bool TraversingCatalog(TreeNode tn, string path) //遍历文件夹 
  2.     { 
  3.         string p = ViewState["path"].ToString(); 
  4.         if (Directory.Exists(path) == false) { return false; } 
  5.         DirectoryInfo dirInfo = new DirectoryInfo(path); 
  6.  
  7.         int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;//获取文件夹的子目录 + 其中包含点的文件 
  8.         if (allNum == 0) //没有任何文件夹和文件就建立"(空白)"节点并返回false 
  9.         { 
  10.             TreeNode empty = new TreeNode(); 
  11.             empty.Text = "(空白)";  //得到文件名 
  12.             empty.Value = "";         //得到文件的详细本地路径 
  13.             empty.ImageUrl = "";      //节点图片 
  14.             //empty.Expanded = false;   //折叠节点 
  15.             tn.ChildNodes.Add(empty); //添加新节点 
  16.             return false
  17.         } 
  18.  
  19.         //循环文件夹(避免混乱,先循环文件夹) 
  20.         int folderIndex = -1; //文件夹索引 
  21.         foreach (DirectoryInfo folder in dirInfo.GetDirectories()) 
  22.         { 
  23.  
  24.             #region//获取该文件夹下 文件的数量 
  25.             int f = 0; 
  26.             DirectoryInfo d1 = new DirectoryInfo(path + "\\" + folder.Name); 
  27.             if (d1.GetFiles("*.*").Length > 0) 
  28.             { 
  29.                 f = d1.GetFiles("*.*").Length; 
  30.                 foreach (var d in d1.GetFiles("*.*")) 
  31.                 { 
  32.                     if (d.Name.Contains(".db") || d.Name.Contains(".ini"))//Thumbs.db  
  33.                     { 
  34.                         f--; 
  35.                     } 
  36.                 } 
  37.             } 
  38.             #endregion 
  39.  
  40.  
  41.             folderIndex++; 
  42.             TreeNode folderNode = new TreeNode(); 
  43.             if (f != 0) 
  44.             { 
  45.                 folderNode.Text = "[" + f.ToString() + "张]" + folder.Name;      //得到文件夹名 
  46.             } 
  47.             else 
  48.             { 
  49.                 folderNode.Text = folder.Name; 
  50.             } 
  51.             folderNode.Value = folder.FullName; //得到文件夹的详细本地路径 
  52.             folderNode.ToolTip = folder.Name;   //得到文件夹名 
  53.             folderNode.Expanded = true;        //折叠节点 
  54.             folderNode.ImageUrl = "images/directory.png"//节点图片 
  55.  
  56.             //if(folderNode.Parent.) 
  57.             folderNode.NavigateUrl = "../PicView/PicView.html?DirPath=" + Server.UrlEncode(tn.Value.Replace(p, "") + "\\" + folder); 
  58.  
  59.             tn.ChildNodes.Add(folderNode);      //添加新节点 
  60.             TraversingCatalog(tn.ChildNodes[folderIndex], path + "/" + folder.Name); // 递归遍历其它文件夹 
  61.         } 
  62.  
  63.  
  64.         #region ////////////////便利 同级别 的 文件 ///////////禁用此段代码 因为只要读取文件夹就够了 不需要文件 
  65.         //循环文件 
  66.  
  67.         //foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件 
  68.         //{ 
  69.         //    TreeNode fileNode = new TreeNode(); 
  70.         //    fileNode.Text = file.Name;      //得到文件名 
  71.         //    fileNode.Value = file.FullName; //得到文件的详细本地路径 
  72.         //    fileNode.ToolTip = file.Name;   //得到文件名 
  73.         //    fileNode.Expanded = false;      //折叠节点 
  74.         //    fileNode.ImageUrl = "images/directory.png"; //节点图片 
  75.         //    tn.ChildNodes.Add(fileNode);    //添加新节点 
  76.         //} 
  77.         #endregion 
  78.  
  79.  
  80.         return true
  81.     } 

最后 来张 效果图

  • 上一篇资讯: VS快捷键大全
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师