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

      

  • 相关阅读:
    ScreenToGif 使用教程
    无问西东
    php如何解决中文乱码问题?
    layer父页面调用子页面的方法
    弹层组件文档
    关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误
    centos下修改文件后如何保存退出
    Linux CentOS 7的图形界面安装(GNOME、KDE等)
    CentOS7安装详解
    Could not attach to pid : "xx"最近启动Xcode运行项目都会出现这个问题,再次启动或者多启动几次,就可以正常运行工程了。
  • 原文地址:https://www.cnblogs.com/feiyucha/p/10222176.html
Copyright © 2011-2022 走看看