首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#快速统计文件夹及其子文件上的文件个数

2013-02-24 
C#快速统计文件夹及其子文件下的文件个数C#如何快速统计文件夹及其子文件下的文件个数?使用如下代码进行统

C#快速统计文件夹及其子文件下的文件个数
C#如何快速统计文件夹及其子文件下的文件个数?使用如下代码进行统计,发现性能不好,比较慢,特别是我文件很多时,比较慢。但右键文件夹→属性,操作系统自己的统计就非常快。我一个文件夹有369,369 个文件,这段代码运行了9分钟,但系统的属性约2分钟就统计出来了。各位大神,有没好的统计代码?

  

int fileNum = 0;
        /// <summary>
        /// 获取某目录下的所有文件(包括子目录下文件)的数量
        /// </summary>
        /// <param name="srcPath"></param>
        /// <returns></returns>
        public int GetFileNum(string srcPath)
        {
            try
            {              
                string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);               
                foreach (string file in fileList)
                {
                    if (System.IO.Directory.Exists(file))
                        GetFileNum(file);
                    else
                        fileNum++;
                }

            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
            return fileNum;
        }
c# 统计文件个数
[解决办法]

        int count = 0;
        public void GetFilesCount(string path)
        {
            //如果嵌套文件夹很多,可以开子线程去统计
            count += System.IO.Directory.GetFiles(path).Length;
            foreach (var folder in System.IO.Directory.GetDirectories(path))
            {
                count += GetFilesCount(folder);


            }            
        }


[解决办法]
多线程能快点。

因为你这里没啥计算,但是需要频繁调用硬盘IO。单线程情况下,你的方法需要等到硬盘IO回复才会执行下一条。而硬盘本身是有缓存的,还有潜力可挖。



引用:
引用:网摘

文档标题:巨快的速度求得某一个目录的大小  作者: 深度论坛

关 键 字:CreateObject,Scripting.FileSystemObject,GetFolder,OLE,取得目录的大小,comobj.hpp

本文转自 C++Builder 研究 - http://www.ccrun.com/article……

.net可以调用c++的dll 见 msdn: importdll

热点排行