C#中Directory.GetFiles(string path , string searchPattern, SearchOption searchOption )
获取path目录中所有文件
注:红色字体部分为可选参数
要搜索的目录的相对或绝对路径。此字符串不区分大小写。
要与 path 中的文件名匹配的搜索字符串。此参数可以包含有效文本路径和通配符(* 和 ?)的组合(请参见“备注”),但不支持正则表达式。
searchPattern可以是文本和通配符的组合字符,但不支持正则表达式。在允许使用下面的通配符说明符searchPattern。
通配符说明符 |
匹配 |
---|---|
* (星号) |
在该位置的零个或多个字符。 |
?(问号) |
在该位置的零个或一个字符。 |
用于指定搜索操作是应包含所有子目录还是仅包含当前目录的枚举值之一。
代码如下:
using System;
using System.Runtime.InteropServices;
namespace System.IO
{
[ComVisible (true)]
[Serializable]
public enum SearchOption
{
TopDirectoryOnly,
AllDirectories
}
}
SearchOption.TopDirectoryOnly 默认选项,仅包含当前目录
SearchOption.AllDirectories 包含所有子目录
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");
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛