C#中Directory.GetFiles(string path , string searchPattern, SearchOption searchOption )
獲取path目錄中所有文件
注:紅色字體部分為可選參數
要搜索的目錄的相對或絕對路徑。此字符串不區分大小寫。
em>path</em>." id="mt1204">要與 path 中的文件名匹配的搜索字符串。此參數可以包含有效文本路徑和通配符(* 和 ?)的組合(請參見“備注”),但不支持正則表達式。
em>path</em>.">searchPattern可以是文本和通配符的組合字符,但不支持正則表達式。em>searchPattern</em>.">em>searchPattern</em>.">在允許使用下面的通配符說明符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");
如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇