Прочитать на английском

Поделиться через


Directory.GetDirectories Метод

Определение

Возвращает имена подкаталогов, соответствующих указанным критериям.

Перегрузки

GetDirectories(String, String, SearchOption)

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих указанному шаблону поиска, и при необходимости ведет поиск в подкаталогах.

GetDirectories(String, String, EnumerationOptions)

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих заданному шаблону поиска и параметрам перечисления.

GetDirectories(String, String)

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих указанному шаблону поиска.

GetDirectories(String)

Возвращает имена подкаталогов (включая пути) в указанном каталоге.

GetDirectories(String, String, SearchOption)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих указанному шаблону поиска, и при необходимости ведет поиск в подкаталогах.

public static string[] GetDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);

Параметры

path
String

Относительный или абсолютный путь к каталогу для поиска. В этой строке не учитывается регистр знаков.

searchPattern
String

Строка поиска, которая будет сравниваться с именами подкаталогов в path. Этот параметр может содержать сочетание допустимых литеральных и подстановочных символов, но не поддерживает регулярные выражения.

searchOption
SearchOption

Одно из значений перечисления, определяющее, следует ли выполнять поиск только в текущем каталоге или также во всех его подкаталогах.

Возвращаемое значение

String[]

Массив полных имен (включая пути) подкаталогов, соответствующих указанным критериям, или пустой массив, если каталоги не найдены.

Исключения

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

-или-

searchPattern не содержит допустимый шаблон.

Параметр path или searchPattern имеет значение null.

searchOption не является допустимым значением SearchOption.

У вызывающего объекта отсутствует необходимое разрешение.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

path — это имя файла.

-или-

Файл или каталог поврежден и недоступен для чтения (например, недопустимая первая единица выделения секции FAT32).

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Примеры

В следующем примере подсчитывается количество каталогов, которые начинаются с указанной буквы в пути. Выполняется поиск только в каталоге верхнего уровня.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string[] dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly);
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

Комментарии

Параметр path может указывать относительные или абсолютные сведения о пути и не учитывает регистр. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ровно один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, searchPattern строка "*t" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

searchPattern не может заканчиваться двумя точками ("..") или содержать две точки (".."), за которыми DirectorySeparatorChar следует или AltDirectorySeparatorChar, и не может содержать недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars.

Методы EnumerateDirectories и GetDirectories отличаются следующим образом: при использовании EnumerateDirectoriesможно начать перечисление коллекции имен до возвращения всей коллекции; при использовании GetDirectoriesнеобходимо дождаться возвращения всего массива имен, прежде чем получить доступ к массиву. Таким образом, при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetDirectories(String, String, EnumerationOptions)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих заданному шаблону поиска и параметрам перечисления.

public static string[] GetDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);

Параметры

path
String

Относительный или абсолютный путь к каталогу для поиска. В этой строке не учитывается регистр знаков.

searchPattern
String

Строка поиска, которая будет сравниваться с именами подкаталогов в path. Этот параметр может содержать сочетание допустимых литеральных и подстановочных символов, но не поддерживает регулярные выражения.

enumerationOptions
EnumerationOptions

Объект, описывающий конфигурацию поиска и перечисления для использования.

Возвращаемое значение

String[]

Массив полных имен (включая пути) подкаталогов в указанном каталоге, которые соответствуют шаблону поиска и параметрам перечисления, или пустой массив, если каталоги не найдены.

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью GetInvalidPathChars().

-или-

searchPattern не содержит допустимый шаблон.

Параметр path или searchPattern имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

path — это имя файла.

-или-

Файл или каталог поврежден и недоступен для чтения (например, недопустимая первая единица выделения секции FAT32).

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Комментарии

Этот метод возвращает все подкаталоги непосредственно в указанном каталоге, которые соответствуют указанному шаблону поиска. Если указанный каталог не имеет подкаталогов или подкаталогов, соответствующих параметру searchPattern , этот метод возвращает пустой массив. Выполняется поиск только в верхнем каталоге. Если вы также хотите выполнить поиск в подкаталогах, используйте GetDirectories(String, String, SearchOption) метод и укажите AllDirectories в параметре searchOption .

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ровно один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, searchPattern строка "*t" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

searchPattern не может заканчиваться двумя точками ("..") или содержать две точки (".."), за которыми DirectorySeparatorChar следует или AltDirectorySeparatorChar, и не может содержать недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars.

Параметр path может указывать относительные или абсолютные сведения о пути и не учитывает регистр. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Методы EnumerateDirectories и GetDirectories отличаются следующим образом: при использовании EnumerateDirectoriesможно начать перечисление коллекции имен до возвращения всей коллекции; при использовании GetDirectoriesнеобходимо дождаться возвращения всего массива имен, прежде чем получить доступ к массиву. Таким образом, при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

GetDirectories(String, String)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Возвращает имена подкаталогов (включая пути) в указанном каталоге, соответствующих указанному шаблону поиска.

public static string[] GetDirectories (string path, string searchPattern);

Параметры

path
String

Относительный или абсолютный путь к каталогу для поиска. В этой строке не учитывается регистр знаков.

searchPattern
String

Строка поиска, которая будет сравниваться с именами подкаталогов в path. Этот параметр может содержать сочетание допустимых литеральных и подстановочных символов, но не поддерживает регулярные выражения.

Возвращаемое значение

String[]

Массив полных имен (включая пути) подкаталогов в указанном каталоге, которые соответствуют указанному шаблону поиска, или пустой массив, если каталоги не найдены.

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью GetInvalidPathChars().

-или-

searchPattern не содержит допустимый шаблон.

Параметр path или searchPattern имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

path — это имя файла.

-или-

Файл или каталог поврежден и недоступен для чтения (например, недопустимая первая единица выделения секции FAT32).

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Примеры

В следующем примере подсчитывается количество каталогов в пути, начинающегося с указанной буквы.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Only get subdirectories that begin with the letter "p."
            string[] dirs = Directory.GetDirectories(@"c:\", "p*");
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

Комментарии

Этот метод возвращает все подкаталоги непосредственно в указанном каталоге, которые соответствуют указанному шаблону поиска. Если указанный каталог не имеет подкаталогов или подкаталогов, соответствующих параметру searchPattern , этот метод возвращает пустой массив. Выполняется поиск только в верхнем каталоге. Если вы также хотите выполнить поиск в подкаталогах, используйте GetDirectories(String, String, SearchOption) метод и укажите AllDirectories в параметре searchOption .

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ровно один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, searchPattern строка "*t" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

searchPattern не может заканчиваться двумя точками ("..") или содержать две точки (".."), за которыми DirectorySeparatorChar следует или AltDirectorySeparatorChar, и не может содержать недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars.

Параметр path может указывать относительные или абсолютные сведения о пути и не учитывает регистр. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Методы EnumerateDirectories и GetDirectories отличаются следующим образом: при использовании EnumerateDirectoriesможно начать перечисление коллекции имен до возвращения всей коллекции; при использовании GetDirectoriesнеобходимо дождаться возвращения всего массива имен, прежде чем получить доступ к массиву. Таким образом, при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetDirectories(String)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Возвращает имена подкаталогов (включая пути) в указанном каталоге.

public static string[] GetDirectories (string path);

Параметры

path
String

Относительный или абсолютный путь к каталогу для поиска. В этой строке не учитывается регистр знаков.

Возвращаемое значение

String[]

Массив полных имен (включая пути) подкаталогов по указанному пути или пустой массив, если каталоги не найдены.

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

path имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

path — это имя файла.

-или-

Файл или каталог поврежден и недоступен для чтения (например, недопустимая первая единица выделения секции FAT32).

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Примеры

В следующем примере в командной строке принимается массив имен файлов или каталогов, определяется тип имени и обрабатывается соответствующим образом.

// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);	
    }
}

Комментарии

Этот метод идентичен GetDirectories(String, String) звездочку (*), указанной в качестве шаблона поиска, поэтому он возвращает все подкаталоги. Если необходимо выполнить поиск по подкаталогам GetDirectories(String, String, SearchOption) , используйте метод , который позволяет указать поиск подкаталогов с searchOption помощью параметра .

Методы EnumerateDirectories и GetDirectories отличаются следующим образом: при использовании EnumerateDirectoriesможно начать перечисление коллекции имен до возвращения всей коллекции; при использовании GetDirectoriesнеобходимо дождаться возвращения всего массива имен, прежде чем получить доступ к массиву. Таким образом, при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.

Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Имена, возвращаемые этим методом, имеют префикс со сведениями о каталоге, предоставленными в path.

Учет регистра path параметра соответствует значению файловой системы, в которой выполняется код. Например, регистр не учитывается в NTFS (файловая система Windows по умолчанию) и учитывается регистр в файловых системах Linux.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0