C#遍历目录和子目录所有文件

时间:12-06-24 栏目:C#开发 作者:kyle 评论:0 点击: 6,325 次

C#遍历目录和子目录。我看了一些代码,好像有点复杂的样子。

今天有个需求,就自己写了一段代码出来。

参考了网上的代码,发现非常简单,就可以实现这个功能。

功能:如果选中了“列出子目录所有文件”这个选择框。就列出选定目录及其子目录所有文章。否则就只列出选定目录的文件出来。

代码如下:

            string folderpath = string.Empty;//保存一个目录路径。这样第二次直接打开就是上次的路径
            if (btnGenArt.Tag != null)
            {
                folderpath = btnGenArt.Tag.ToString();//我是把目录路径寄存在这个按钮的tag属性下面,好像没必要。FolderBrowser有一个记录功能吧。我没找到就随便用了
            }
            lstGenArt.Items.Clear();//清空列表,到时候文件名就写到列表来
            using (FolderBrowserDialog fbd = new FolderBrowserDialog())
            {
                fbd.RootFolder = Environment.SpecialFolder.Desktop;//初始目录设为桌面
                if (!string.IsNullOrEmpty(folderpath))
                    fbd.SelectedPath = folderpath;
                fbd.ShowNewFolderButton = true;//是否显示新建文件夹按钮
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    btnGenArt.Tag = fbd.SelectedPath;
                    int i = 0;
                    string[] files = new string[] { };//定义一个字符串数组
                    if (chkGenArtSubfolder.Checked)
                    {//这个是核心代码了。如果选中了列出子目录,就用下面这行,可以列出所有目录及子目录的所有文件
                        files = Directory.GetFiles(fbd.SelectedPath, "*.*", SearchOption.AllDirectories);
                    }
                    else
                    {//否则只列出当前目录的文件
                        files = Directory.GetFiles(fbd.SelectedPath);
                    }
                    if (files == null) return;//如果是null就退了。不然要出错。
                    foreach (string item in files)//遍历并显示出来
                    {
                        i++;
                        FileInfo fileinfo = new FileInfo(item);
                        ListViewItem lv = new ListViewItem(i.ToString());
                        lv.SubItems.Add(fileinfo.FullName);
                        string[] file = File.ReadAllLines(fileinfo.FullName, Encoding.UTF8);
                        if (file == null || file.Length < 1)
                        {
                            continue;
                        }
                        lv.SubItems.Add(file[0].ToString());
                        lv.SubItems.Add("等待");
                        lstGenArt.Items.Add(lv);
                        Application.DoEvents();
                    }

                }
            }
            lblGenArtNum.Text = lstGenArt.Items.Count.ToString() + "个文章";

剩下的就不解释了

2

这是最后的效果

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C#遍历目录和子目录所有文件,3Q

C#遍历目录和子目录所有文件:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人