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日

相关文章

  • C# 使用WPF 用MediaElement控件实现视频循环播放

    下面是关于“C#使用WPF用MediaElement控件实现视频循环播放”的完整攻略,包含两个示例。 1. WPF和MediaElement控件简介 WPF是一种用于创建Windows桌面应用程序的技术,它提供了一种基于XAML的用户界面设计语言。MediaElement控件是WPF中的一个控件,它可以用于播放音频和视频文件。 2. 使用MediaEleme…

    C# 2023年5月15日
    00
  • 利用Warensoft Stock Service编写高频交易软件

    利用Warensoft Stock Service编写高频交易软件需要具备一定的编程和交易知识。下面是一些步骤,可以帮助您开始: 1. 注册并开通Warensoft帐户 Warensoft是提供互联网股票交易服务的平台。首先,需要在Warensoft官网上注册一个帐户,并通过实名认证等方式完成开户流程。注册后,可以使用Warensoft Stock Serv…

    C# 2023年6月6日
    00
  • ASP.NET Core 过滤器中使用依赖注入知识点总结

    ASP.NET Core 过滤器中使用依赖注入知识点总结 ASP.NET Core是一个跨平台的Web应用程序框架,它可以帮助我们构建高性能的Web应用程序。过滤器是ASP.NET Core中的一个重要概念,它可以帮助我们在请求管道中添加逻辑。本攻略将详细介绍如何在ASP.NET Core过滤器中使用依赖注入。 环境要求 在进行ASP.NET Core过滤器…

    C# 2023年5月17日
    00
  • C#使用FolderBrowserDialog类实现选择打开文件夹方法详解

    C#使用FolderBrowserDialog类实现选择打开文件夹方法详解 在C#开发中,文件夹是一个非常常见的操作对象,使用FolderBrowserDialog类可以实现选择打开文件夹的效果。本文将详细讲解如何使用FolderBrowserDialog类实现选择打开文件夹的方法。 使用 FolderBrowserDialog 显示窗口 FolderBro…

    C# 2023年6月1日
    00
  • C#微信公众号开发之自定义菜单

    C#微信公众号开发之自定义菜单 简介 微信公众号是微信平台提供给开发者的一款应用型产品,它提供给企业或个人一个与互联网用户交互的应用平台。 微信公众号开发的菜单,提供给用户一个便捷来访问公众号的方式,菜单可以是文字、图文等形式。在这篇文章中,我们将介绍如何使用C#实现微信公众号的自定义菜单。 实现步骤 1. 注册成为微信开发者 在微信公众号开发之前,我们需要…

    C# 2023年6月1日
    00
  • C# TreeView从数据库绑定数据的示例

    下面我将为你详细讲解“C# TreeView从数据库绑定数据的示例”的完整攻略。 准备工作 在演示绑定数据前,我们需要准备一些工作。首先,需要在Visual Studio中新建一个Windows Forms应用程序(这里以VS2019为例)。然后,在Solution Explorer中右键单击“References”,选择添加引用,添加System.Data…

    C# 2023年6月2日
    00
  • 浅谈Java多线程实现及同步互斥通讯

    浅谈Java多线程实现及同步互斥通讯 引言 多线程是指一种多个线程执行完毕后可以得到更好的系统性能的机制。Java多线程的实现是通过创建Thread实例或者继承Thread类并重写它的run()方法来完成的。Java也提供了一个Java.util.concurrent包,它为Java多线程编程提供了更多的助力。在多线程编程中,同步互斥是一种非常重要的问题,它…

    C# 2023年6月7日
    00
  • C# GetHashcode():返回当前实例的哈希代码

    首先,C#中的GetHashCode()方法是一个用于获取对象哈希码的函数,用于将对象的状态转换为一串数字,以便在哈希表等数据结构中进行高效查找。它返回一个int类型的哈希值,可以作为该对象在哈希表中的索引值。 GetHashCode()的实现方式可能因为不同的开发者或.NET Framework版本而有所不同,但常见的默认实现是通过将对象中的字段或属性(称…

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