Подтвердить что ты не робот

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

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

Например:

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

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

Как это реализовать?

4b9b3361

Ответ 1

Вот пример использования 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);
    }    
}

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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
}

Ответ 4

Вы можете сделать это следующим образом:

....

List<string> _filesNames;

foreach(var file in _directory)
{
    string name = GetFileName(file);
    if(name.IndexOf(_partialFileName) > 0)
    {
      _fileNames.Add(name);   
    }
}
....