标签:start name rgs 文件 summary 技术 select object selected
实现效果:
  
知识运用:
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;
            }
        }
标签:start name rgs 文件 summary 技术 select object selected
原文地址:https://www.cnblogs.com/feiyucha/p/10222176.html