Для 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. Приведенный ниже точный код работает для меня на Mono на Ubuntu Hardy. Я согласен, что на самом деле не имеет смысла иметь два связанных класса, использующих разные соглашения. Тем не менее, это то, что говорится в документации (ссылка выше), и Mono соответствует документам. Если реализация Microsoft не делает, у них есть ошибка:
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);
}
}
}