C# 中遍历文件夹和子目录很常见,本文就详细讲解如何使用 C# 遍历文件夹中的文件以及子目录中的文件,同时只选择图片文件。
遍历文件夹中的所有图片文件
方法一:使用 Directory.GetFiles
Directory.GetFiles() 方法返回指定路径下的所有文件,可以通过 fileName.Contains(".jpg") 和 fileName.Contains(".png") 来过滤出图片。
using System.IO;
// 文件夹路径
string folderPath = @"C:\Temp\Images\";
// 获取文件夹下符合格式的所有图片
string[] files = Directory.GetFiles(folderPath, "*.*", SearchOption.TopDirectoryOnly)
.Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png")).ToArray();
foreach (string file in files)
{
// 处理文件逻辑
}
上述代码中,folderPath 是文件夹路径,files 变量是存储所有图片文件路径的 string 数组。其中,使用 ToLower() 方法来将文件路径中的所有字符转换为小写字符,如果不进行转换,可能会导致判断图片文件格式失败。
方法二:使用 Directory.EnumerateFiles
Directory.GetFiles() 返回的是一个数组,如果文件数量很多或者文件较大,返回数组会占用很大的内存,一次性获取所有文件不适用于性能较差的小型设备。此时可以使用 Directory.EnumerateFiles(),它采用延迟加载的方式,只有当遍历到某个文件时才会将这个文件加载到内存中。使用代码如下:
using System.IO;
// 文件夹路径
string folderPath = @"C:\Temp\Images\";
// 获取文件夹下符合格式的所有图片
IEnumerable<string> files = Directory.EnumerateFiles(folderPath, "*.*", SearchOption.TopDirectoryOnly)
.Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png"));
foreach (string file in files)
{
// 处理文件逻辑
}
遍历文件夹及子目录下所有图片文件
C# 中遍历文件夹及子目录下所有文件,可以使用 Directory.GetFileSystemEntries() 和 Directory.EnumerateFileSystemEntries() 方法。具体代码如下:
using System.IO;
// 文件夹路径
string folderPath = @"C:\Temp\Images\";
// 获取文件夹及子目录下符合格式的所有图片
string[] files = Directory.GetFileSystemEntries(folderPath, "*.*", SearchOption.AllDirectories)
.Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png")).ToArray();
foreach (string file in files)
{
// 处理文件逻辑
}
上述代码中,GetFileSystemEntries() 方法可以递归获取文件夹中的所有子目录和子文件夹,Where() 方法可以过滤出所有图片文件。
下面是另一个使用 Directory.EnumerateFileSystemEntries() 的示例:
using System.IO;
// 文件夹路径
string folderPath = @"C:\Temp\Images\";
// 获取文件夹及子目录下符合格式的所有图片
IEnumerable<string> files = Directory.EnumerateFileSystemEntries(folderPath, "*.*", SearchOption.AllDirectories)
.Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png"));
foreach (string file in files)
{
// 处理文件逻辑
}
总结
本文主要介绍了 C# 如何遍历文件夹及子目录下所有图片文件,使用 Directory.GetFiles() 或 Directory.EnumerateFiles() 方法都可以实现遍历文件夹功能,其中 Directory.GetFiles() 适合数据量较小的场景,而 Directory.EnumerateFiles() 则适用于数据量较大的场景。最后提醒:尽量使用延迟加载来规避内存消耗问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 遍历文件夹子目录下所有图片及遍历文件夹下的文件 - Python技术站