對於Directory.GetFiles,?表示「一個字符完全爲零或」。另一方面,你可以使用DirectoryInfo.GetFiles,爲什麼?表示「完全是一個字符」(顯然是你想要的)。
編輯:
全碼:
string[] resultFileNames = (from fileInfo in new DirectoryInfo(@"C:\temp").GetFiles("????????????.tif") select fileInfo.Name).ToArray();
你也許可以跳過ToArray的,只是讓resultFileNames是IEnumerable<string>
。
人們報告這在MS .NET上不適用於他們。下面的確切代碼適用於Ubuntu Hardy上的Mono。我同意沒有意義有兩個相關的類使用不同的約定。但是,這是文檔(上面鏈接)所說的,而且Mono符合文檔。如果微軟的落實沒有,他們有一個錯誤:
using System;
using System.IO;
using System.Linq;
public class GetFiles
{
public static void Main()
{
string[] resultFileNames = (from fileInfo in new DirectoryInfo(@".").GetFiles("????????????.tif") select fileInfo.Name).ToArray();
foreach(string fileName in resultFileNames)
{
Console.WriteLine(fileName);
}
}
}
但'DirectoryInfo.GetFiles'也返回兩個項'c:\ temp \ GZ96A7005.tif'和'c:\ temp \ GZ96A7005001.tif'。 – 2009-06-08 03:20:47
Leon,你可以發佈你使用DirectoryInfo.GetFiles的確切代碼嗎? – 2009-06-08 03:26:12
DirectoryInfo.GetFiles()爲我匹配零個或一個字符。 .NET 3.5 SP1。也許這種行爲是以前版本中的一個錯誤。當然,他們的行爲不同。 – Lucas 2009-06-08 04:40:58