Как найти файл по его частичному имени? - PullRequest
30 голосов
/ 24 февраля 2012

Как я могу получить полное имя файла?

Например:

У меня есть файл с именем 171_s.jpg, который хранится на жестком диске.

Мне нужно найти файл по его частичному имени, т.е. 171_s, и получить полное имя.

Как я могу это реализовать?

Ответы [ 4 ]

61 голосов
/ 24 февраля 2012

Вот пример использования GetFiles ():

static void Main(string[] args)
{
    string partialName = "171_s";
    DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(@"c:\");
    FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + partialName + "*.*");

    foreach (FileInfo foundFile in filesInDir)
    {
        string fullName = foundFile.FullName;
        Console.WriteLine(fullName);
    }    
}
9 голосов
/ 05 сентября 2014

Ответ уже опубликован, однако для простоты понимания здесь указан код

string folderPath = @"C:/Temp/";
DirectoryInfo dir= new DirectoryInfo(folderPath);
FileInfo[] files = dir.GetFiles("171_s*", SearchOption.TopDirectoryOnly);
foreach (var item in files)
{
    // do something here
}
8 голосов
/ 24 февраля 2012

Вы можете использовать System.IO.Directory.GetFiles()

http://msdn.microsoft.com/en-us/library/ms143316.aspx

public static string[] GetFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
)

path Тип: System.String Каталог для поиска.

searchPattern Тип: System.String Строка поиска, совпадающая с именами файлов в пути.Параметр не может заканчиваться двумя периодами ("..") или содержать два периода (".."), за которыми следует DirectorySeparatorChar или AltDirectorySeparatorChar, а также он не может содержать символы InvalidPathChars.

searchOption Тип: System.IO.SearchOption Одно из значений SearchOption, которое указывает, должна ли операция поиска включать все подкаталоги или только текущий каталог.

2 голосов
/ 24 февраля 2012

Вы можете сделать это так:

....

List<string> _filesNames;

foreach(var file in _directory)
{
    string name = GetFileName(file);
    if(name.IndexOf(_partialFileName) > 0)
    {
      _fileNames.Add(name);   
    }
}
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...