欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C#获取指定文件夹下所有文件的两种方式(使用Directory.GetFiles()和Directory.EnumerateFiles()函数)及其区别

C#获取指定文件夹下所有文件的两种方式(使用Directory.GetFiles()和Directory.EnumerateFiles()函数)及其区别

2025/2/27 10:43:38 来源:https://blog.csdn.net/2401_85919417/article/details/143658815  浏览:    关键词:C#获取指定文件夹下所有文件的两种方式(使用Directory.GetFiles()和Directory.EnumerateFiles()函数)及其区别

这篇文章我们来看两种C#获取指定文件夹下所有文件的方法,先直观看一下示例代码,然后对这两种方法进行一下说明和对比。

方法一

using System;namespace demo
{class Demo{static void Main(){try{string path = "/path";//注意修改string[] filePathArray = Directory.GetFiles(path);foreach (var filePath in filePathArray){//filePath是文件绝对路径,想要获取我们平时所说的文件名还要解析一下,比如使用Path.GetFileName()获取string fileName = Path.GetFileName(filePath);Console.WriteLine(fileName);}}catch (Exception ex){Console.WriteLine("Exception:{0}", ex.Message);}}}
}

方法二

using System;namespace demo
{class Demo{static void Main(){try{string path = "/path";//注意修改foreach (var filePath in Directory.EnumerateFiles(path)){//filePath是文件绝对路径,想要获取我们平时所说的文件名还要解析一下,比如使用Path.GetFileName()获取string fileName = Path.GetFileName(filePath);Console.WriteLine(fileName);}}catch (Exception ex){Console.WriteLine("Exception:{0}", ex.Message);}}}
}

这两种方法用到的Directory.GetFiles()Directory.EnumerateFiles()函数都有多种重载版本,可以按照不同的指定条件获取目录下文件,示例中算是最简单的一种,不指定任何条件,就是获取所有文件。

这两种方法看起来很像,其实底层逻辑区别很大,看一下官方文档的解释:

EnumerateFiles和 GetFiles 方法的不同之处如下:使用 EnumerateFiles时,可以在返回整个集合之前开始枚举名称集合。 使用 GetFiles时,必须等待返回整个名称数组,然后才能访问数组。 因此,在使用许多文件和目录时, EnumerateFiles 可以更高效。
未缓存返回的集合;每次调用 GetEnumerator 集合上的 将启动一个新的枚举。

其实从函数名我们也能猜的差不多了,GetFiles是直接将全部文件加载到内存里,然后才可以访问,EnumerateFiles是对文件枚举,有了这个解释就基本可以确定猜想了。

所以对这些信息分析之后我们就可以认为,如果文件夹下有大量文件,GetFiles会出现性能问题,而且还会占用大量内存资源,甚至可能会因为内存溢出而导致程序崩溃,而因为EnumerateFiles是枚举这些文件,并且不会缓存,所以就可以避免产生和GetFiles同样的问题,这点需要注意。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词