zoukankan      html  css  js  c++  java
  • 获取文件夹下的子文件夹及文件的名称

    实现效果:

      

    知识运用:

      DirectoryInfo类的GetFileSystemInfo方法  //检索当前目录的文件和子目录的强类型FileSystemInfo对象的数组

      public FileSystemInfo[] GetFileSystmeInfo()

      FileInfo类的DirectoryName属性    //获取表是目录的完整路径的字符串

      public string DircetoryName {get;}

      FileInfo类的Name属性      //获取文件名

      public override string Name{get;}

    实现代码:

            private void button1_Click(object sender, EventArgs e)
            {
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    textBox1.Text = folderBrowserDialog1.SelectedPath;          //显示选择文件夹的路径
                    tempstr = folderBrowserDialog1.SelectedPath;                //存储选择文件夹的路径
                }
                thdAddFile = new Thread(new ThreadStart(SetAddFile));           //创建一个线程
                thdAddFile.Start();                                             //启动线程
            }
    
            public delegate void AddFile();                                     //定义委托线程
            public void SetAddFile()
            {
                this.Invoke(new AddFile(RunAddFile));                           //对指定的线程进行托管
            }
    
            public void RunAddFile() 
            {
                TreeNode TNode = new TreeNode();
                File_Copy(treeView1,tempstr,TNode,0);                           //执行遍历方法
                Thread.Sleep(0);                                                //挂起主线程
                thdAddFile.Abort();                                             //退出线程
            }
            /// <summary>
            /// 一个递归方法用来遍历制定文件夹下的
            ///     所有子文件夹河文件
            /// </summary>
            /// <param name="TV">TreeView控件</param>
            /// <param name="Sdir">指定文件夹的路径</param>
            /// <param name="TNode">TreeView控件的当前节点</param>
            /// <param name="n">指定是文件还是文件夹</param>
            private void File_Copy(TreeView TV,string Sdir,TreeNode TNode,int n)
            {
                DirectoryInfo dir = new DirectoryInfo(Sdir);
                try
                {       
                    if (!dir.Exists)                                       //判断所指文件或文件夹是否存在
                        return;
                    DirectoryInfo dirD = dir as DirectoryInfo;
                    if (dirD == null)
                        return;
                    else
                    {
                        if (n == 0)     
                        {
                            TNode = TV.Nodes.Add(dirD.Name);                //添加文件夹的名称
                            TNode.Tag = 1;
                        }
                        else            
                        {
                            TNode = TNode.Nodes.Add(dirD.Name);             //文件夹中添加子文件夹的名称
                            TNode.Tag = 1;
                        }
                    }
                    FileSystemInfo[] files = dirD.GetFileSystemInfos();     //获取文件夹中所有文件和文件夹
                    foreach (FileSystemInfo FSys in files)          //对单个FileSystemInfo进行判断 是文件夹则递归
                    {
                        FileInfo file = FSys as FileInfo;
                        if (file != null)                                   //是文件 进行操作
                        {
                            FileInfo SFinfo = new FileInfo(file.DirectoryName + "\" + file.Name);  //文件的原始路径
                            TNode.Nodes.Add(SFinfo.Name);                   //添加文件
                            TNode.Tag = 1;
                        }
                        else 
                        {
                            File_Copy(TV,Sdir+"\"+FSys.ToString(),TNode,1); //对文件夹进行递归
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
            }
    

      

  • 相关阅读:
    基于Metaweblog API 接口一键发布到国内外主流博客平台
    uva144 Student Grants
    Uva 10452
    Uva 439 Knight Moves
    Uva 352 The Seasonal War
    switch语句
    java——基础知识
    我的lua学习2
    codeforces 431 D. Random Task 组合数学
    codeforces 285 D. Permutation Sum 状压 dfs打表
  • 原文地址:https://www.cnblogs.com/feiyucha/p/10222176.html
Copyright © 2011-2022 走看看