文件基本操作之获取文件夹下的所有子文件夹及其名称

获取文件夹下的所有子文件夹及其名称:

文件基本操作之获取文件夹下的所有子文件夹及其名称_第1张图片

用到的主要控件:TextBox,FolderBrowserDialog,Button,TreeView等。


相关代码:

        private string temStr;
        Thread thdAddFile;
        private void btn_Click(object sender, EventArgs e)
        {
            //打开文件夹对话框
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                //显示选择的文件夹路径
                textBoxFile.Text = folderBrowserDialog1.SelectedPath;
                //存储选择的文件夹路径
                temStr = 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,temStr,TNode,0);
            //执行主线程
            Thread.Sleep(0);
            //执行线程
            thdAddFile.Abort();
        }

        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();
                //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo fileInfo = FSys as FileInfo;
                    //如果是文件,进行文件的复制操作
                    if (fileInfo != null)
                    {
                        //获取文件所在原始路径
                        FileInfo SFInfo = new FileInfo(fileInfo.DirectoryName + "\\" + fileInfo.Name);
                        TNode.Nodes.Add(fileInfo.Name);
                        TNode.Tag = 1;
                    }
                    else {
                        string pp = FSys.Name;
                        //如果是文件夹,则进行递归调用
                        File_Copy(TV,Sdir+"\\"+FSys.ToString(),TNode,1);
                    }
                }


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

        }


你可能感兴趣的:(C#编程)