转自:http://www.365jz.com/article/24023

C#中Directory.GetFiles(string path , string searchPattern, SearchOption searchOption )

获取path目录中所有文件

注:红色字体部分为可选参数

参数

path

要搜索的目录的相对或绝对路径。此字符串不区分大小写。

searchPattern

em>path</em>." id="mt1204">要与 path 中的文件名匹配的搜索字符串。此参数可以包含有效文本路径和通配符(* 和 ?)的组合(请参见“备注”),但不支持正则表达式。

em>path</em>.">searchPattern可以是文本和通配符的组合字符,但不支持正则表达式。em>searchPattern</em>.">em>searchPattern</em>.">在允许使用下面的通配符说明符searchPattern

通配符说明符

匹配

* (星号)

在该位置的零个或多个字符。

?(问号)

在该位置的零个或一个字符。

   详情可参见:https://msdn.microsoft.com/zh-cn/library/ms143316(v=vs.110).aspx

     经本人测试发现:

     "*.mat"可搜索到"box.mat"、"box.mat1"等格式的文件,但是搜索不到文件"box.mat.meta"

searchOption

用于指定搜索操作是应包含所有子目录还是仅包含当前目录的枚举值之一。

代码如下:

using System;
using System.Runtime.InteropServices;
namespace System.IO
{
[ComVisible (true)]
[Serializable]
public enum SearchOption
{
  TopDirectoryOnly,
  AllDirectories
}
}

SearchOption.TopDirectoryOnly  默认选项,仅包含当前目录

SearchOption.AllDirectories   包含所有子目录

返回值

Type: System.String[]

指定目录中与指定的搜索模式和选项匹配的文件的完整名称(包含路径)的数组;如果未找到任何文件,则为空数组。

1、path使用相对路径

string path = "Assets/model";

string[] files = Directory.GetFiles(path) ;

可通过Directory.GetCurrentDirectory()查看当前路径。

2、path使用绝对路径

string path = "D:/UnityDemo/Assets/model"

string[] files = Directory.GetFiles(path

C# Directory.GetFiles()获取多个类型格式的文件

第一种方式
System.IO.Directory.GetFiles()获取多个类型格式的文件
System.IO.Directory.GetFiles("c:\","(*.exe|*.txt)");

第二种方式
var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

但这种写法应该只有VS2008才支持,VS2005不支持

  directoryinfo 既可以获取到所有文件夹,也可以获取到所有文件;directoryinfo GetDirectories() 是获取指定目录的所有文件夹,directoryinfo GetFiles() 是获取指定目录的所有文件。

  有的时候写代码要获取几种指定类型的文件,例如要获取指定目录的所有视频文件,视频文件有很多种格式,如 rmvb、rm、avi、wav、mkv、mp4 等等,而 directoryinfo GetFiles() 一次只能传递一种格式的参数,所以就得分开获取,在介绍获取方法之前,先看 directoryinfo GetFiles() 的一些基本用法。

  一、C# directoryinfo getfiles获取所有文件

  如果要获取指定目录下的所有文件,可用以下代码:

  /// <summary>
  /// C#获取指定目录下的所有文件
  /// </summary>
  /// <param name="filePath">路径</param>
  private void GetFiles(string filePath)
  {
    DirectoryInfo di = new DirectoryInfo(filePath);
    FileInfo[] afi = di.GetFiles("*.*");//*.*可以不要
  }

  调用方法:GetFiles(@"G:\xq\test");

  二、directoryinfo getfiles获取一种指定类型文件

  假如要获取指定目录下所有 .dat 文件,跟方法也一样,只不过把 *.* 改为 *.dat 即可,代码如下:

  /// <summary>
  /// C#获取一种指定类型文件
  /// </summary>
  /// <param name="filePath">路径</param>
  private void GetFiles(string filePath)
  {
    DirectoryInfo di = new DirectoryInfo(filePath);
    FileInfo[] afi = di.GetFiles("*.dat");
  }

  调用方法:GetFiles(@"G:\xq\test");

  三、directoryinfo getfiles获取多种指定类型文件

  由于 getfiles() 一次只能获到一种类型的文件,所以只能先获取到指定目录下的所有文件,再循环判断每个文件是否是要获取的文件;假如获取指定目录下的所有视频文件,实现代码如下:

  /// <summary>
  /// C#获取指定目录下多种指定类型文件
  /// </summary>
  /// <param name="filePath">路径</param>
  private void GetVideoFiles(string filePath)
  {
    DirectoryInfo di = new DirectoryInfo(filePath);
    FileInfo[] afi = di.GetFiles("*.*");
    string fileName;
    IList<string> list = new List<string>();

    for (int i = 0; i < afi.Length; i++)
    {
      fileName = afi[i].Name.ToLower();
      if (fileName.EndsWith(".rmvb") || fileName.EndsWith(".rm") || fileName.EndsWith(".avi") || fileName.EndsWith(".mp4"))
      {
        list.Add(fileName);
      }
    }
  }

  如果不同类型的文件要求不同的操作,把并列的条件改 if(){} else if(){} 或 switch 语句即可。

  调用方法:GetVideoFiles(@"G:\xq\test");

链接:http://www.365jz.com/article/24023 
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

C#中Directory.GetFiles() 函数的使用方法(读取目录中的文件)相关推荐

  1. matlab作动态函数曲线图,[转载]Matlab中使用Plot函数动态画图方法总结

    本帖最后由 sonictl 于 2012-12-31 12:18 编辑 请删除我 清楚超靠靠靠 没办法,一会儿限制这不能发表,那不能发表的.... [转载]Matlab中使用Plot函数动态画图方法总 ...

  2. Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法

    STC单片机Keil中C语言函数定位的方法:STC单片机Keil中C语言函数定位的方法 下面以演示程序进行说明 演示程序中有ReadIAP.ProgramIAP和EraseIAP三个函数 最终目的是将 ...

  3. servers split sql_SQL中实现SPLIT函数几种方法总结(必看篇)

    例1 代码如下 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp tabl ...

  4. c语言random函数在vc,C++ 中随机函数random函数的使用方法

    C++ 中随机函数random函数的使用方法 一.random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过. 可改用C++下的rand函数来实现. 1.C++标准函数库提供一随机数生 ...

  5. MFC80.DLL复制到程序目录中,也有的说复制到安装目录中

    在用VS2005学习C++调试程序的时候,按F5键,总提示这个问题, 不晓得什么原因,网上有的说找到MFC80.DLL复制到程序目录中,也有的说复制到安装目录中,可结果很失望,也有的VS2005安装有 ...

  6. matlab 中的 find 函数 各种使用方法

    Matlab 之 find()函数 当我第一次用matlab语言编写一个工程项目时,发现自己编写的脚本里循环特别多,导致编程效率很低,这让我特别苦恼.有一次导师让我阅读他编写的一个Matlab脚本,并 ...

  7. c语言isnumber函数的使用方法,在excel中使用ISNUMBER函数的详细步骤介绍

    软件大小: 73 MB 软件版本: 2010高级标准版 软件类型: 办公工具 查看详情 直接下载 yesky 标签: 想知道excel中ISNUMBER函数怎么使用吗?以下是小编给大家整理的在exce ...

  8. 在python中、对于函数定义代码的理解_python中如何理解装饰器代码?

    长文预警,[最浅显易懂的装饰器讲解] 能不能专业地复制题目?配上代码,问题分段. 我来给提主配上问题的代码. 正式回答: 1:如何理解return一个函数,它与return一个值得用法区别在哪? 敲黑 ...

  9. win7中能对窗口的排列方法是_Windows7中多个窗口的排列方式有( )_学小易找答案...

    [多选题]Windows7中多个窗口的排列方式有( ) [多选题]Windows7资源管理器的"库"可以管理电脑中的( ) [多选题]在"计算机"窗口中,利用& ...

最新文章

  1. mysql 多库多表_shell脚本建多库、多表、多实例(mysql)
  2. 观看自由!B站上线斯坦福最新「机器学习系统(MLSys)」全集
  3. tomcat 配置异常/404页面
  4. es filter过滤器_Elasticsearch 之 Filter 与 Query 有啥不同?
  5. 成都两年JAVA工程师_成都Java工程师学习路线
  6. 为什么Spartacus单元测试里对http返回的Observable对象调用subscribe时,会触发依赖注入的框架代码
  7. mysql_contents_将MySQLhelpcontents的内容有层次的输出方法推荐
  8. keyshot环境素材文件_KeyShot渲染,打光这么打,效果倍儿棒
  9. 《图解CSS3:核心技术与案例实战》
  10. java作业四_Java第四次作业
  11. JQuery调用iframe子页面函数/对象的方法
  12. 【机器学习】机器学习用到的常用术语
  13. mysql query 原理_[转]MySQL的Query Cache原理
  14. 把UIView提到所有View的最前面
  15. C语言程序设计基础学习笔记简介
  16. 《管理的实践》全书结构
  17. 通信恩仇,5G江湖(转)
  18. Exp7 网络欺诈防范 20164323段钊阳
  19. c语言字母数字有多少种组合,C语言------排列组合 组合情况(重复和不重复)
  20. 个人简历——英文单词

热门文章

  1. 父亲节,降央卓玛一首《父亲》,送给天下做爸爸的!
  2. XX行网上贵金属交易项目
  3. 浅谈考雅思(谨以此总结自己经验教训)
  4. 一级计算机rank函数的应用,rank函数排名怎么用?
  5. 【模拟】洛谷 P1058 立体图
  6. 《实用机器学习》(孙亮 黄倩.著)笔记——第七章 基于内容的推荐算法
  7. 【Jenkins】Jenkins :首次登录直接使用 admin 账户
  8. 华为emui10用adb开freeform(为了小窗)
  9. Solr环境搭建,下载和安装
  10. Flume虞兮叹一(为什么要把kafka和flume集成)