C# 遍历文件夹子目录下所有图片及遍历文件夹下的文件

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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • .NET实现定时发送邮件代码(两种方式)

    下面是“.NET实现定时发送邮件代码”攻略的详细讲解。 一、前言 邮件是现代人与人之间联系的重要方式之一,而定时发送邮件则可以让我们更加优雅的处理邮件,不用担心自己在某些时间段错过了发送重要邮件的时机。本文将演示两种.NET中定时发送邮件代码的实现方式,供参考。 二、第一种方式:使用System.Threading.Timer类 2.1 实现原理 使用Sys…

    C# 2023年5月31日
    00
  • C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)

    下面是关于C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)的完整攻略。 数组 定义 数组是一种数据结构,可以在单个变量下存储多个值。在C#中,数组是由相同类型的元素组成的集合。可以使用数组来存储一个固定数量的元素,这些元素在创建数组时就已被确定。 用法 创建数组 在C#中创建数组,需要指定数组的长度,然后使用关键字n…

    C# 2023年5月31日
    00
  • C#异步使用需要注意的几个问题

    C#异步使用需要注意的几个问题 异步编程是现代软件开发中非常重要的一种编程方式,它可以充分利用CPU资源,提高程序的响应速度,提升用户体验。但是,异步编程也存在一些问题,需要开发者注意。 本文将介绍C#中异步编程需要注意的几个问题,包括: 异常处理 对象生命周期管理 异步编程的性能影响 异常处理 在异步编程中,如果异步方法内部出现异常而不进行处理,将会导致整…

    C# 2023年5月15日
    00
  • C#中查找Dictionary中重复值的方法

    要查找C#中Dictionary中的重复值,我们可以通过以下几个步骤实现: 首先,我们需要使用一个新的Dictionary来保存原始Dictionary的反向映射,即将原字典的键值对中的值作为反向字典的键,原字典的键作为反向字典的值。这样,我们就可以快速地查找是否存在重复的值。 接下来,我们需要使用LINQ查询来搜索反向字典,找到重复的值。我们可以使用Gro…

    C# 2023年6月8日
    00
  • C#中ref和out的区别浅析

    C#中ref和out的区别浅析 简介 在C#中,关键字ref和out用于传递参数。尽管两个关键字都可以使用相同的参数来传递值,但它们在应用和使用上还是有一些区别,下面进行一一讲解。 ref关键字 ref关键字用于将参数传递给函数并且函数可以修改传递的参数,同时最初传递的参数也会被修改。这里要注意的是,在使用ref关键字时,必须要在通过ref来初始化变量(即在…

    C# 2023年5月15日
    00
  • .Net中Task Parallel Library的进阶用法

    以下是“.Net中TaskParallelLibrary的进阶用法”的完整攻略: 什么是TaskParallelLibrary TaskParallelLibrary(TPL)是.NET Framework中的一个并行编程库,它提供了一组用于编写并行代码类型和方法。TPL可以帮助我们轻松地编写高效的并行代码,从而提高应用程序的性能。 进阶用法 以下是Task…

    C# 2023年5月12日
    00
  • c#:CTS类型系统

    C#中的CTS类型系统(Common Type System)是一种规范,用于确保不同类型的语言在互相交互时能够进行正确的类型转换和操作。下面将分别从三个方面对CTS类型系统进行讲解。 CTS数据类型 C#的数据类型分为值类型和引用类型两类。值类型用于存储简单数据类型如数字、字符等,而引用类型则用于所有需要动态分配内存的复杂数据类型,如字符串、数组、类等。下…

    C# 2023年6月8日
    00
  • SQL Server 2005 中使用 Try Catch 处理异常

    下面是详细讲解 SQL Server 2005 中使用 TryCatch 处理异常的完整攻略。 什么是 TryCatch TryCatch 是一种异常处理机制,可以在代码执行过程中捕获异常,并采取不同的措施对它们进行处理。在 SQL Server 中,TryCatch 可以用来处理 T-SQL 脚本中的异常。 使用 TryCatch 处理异常的基本格式 在 …

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部