必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-09-28 11:15:49来源:IT技术作者:seo实验室小编阅读:79次「手机版」
 

directory.getfiles

转自: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 

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关阅读

学习笔记(VO框架大家,电脑摄像头使用)

UBUNTU18安装rosVO框架的搭建 高翔书中的源程序出错 cmake…时说没有.opencv31,我的电脑中装的时4.0版本,需要重新安装3.1安装过程中,3.1也出错

日本80%男性都爱穿的内裤!感受真空上阵,枪弹分离,松紧适

©程序员严选 

时间戳的使用:什么时候该用绝对值,什么时候该用相对值?

就像生物体一样,信息也会随着时间的推移而更新。今年有用的信息,过几年可能就没那么重要了。所以给你的内容加上时间戳是很重要的。

java中的常见异常

1、java中异常分为哪些种类? 2、举例说明 3、error 和 exception 的区别? 4、java 异常处理机制 5、请写出你最常见的 RuntimeExcep

Linux中apt与apt-get的区别以及详细使用方法

本文转载自:Linux中apt与apt-get命令的区别与解释以及Linux命令apt-get使用方式Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt

分享到:

栏目导航

推荐阅读

热门阅读