DirectoryInfo.GetFileSystemInfos Метод

Определение

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

Перегрузки

GetFileSystemInfos()

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

GetFileSystemInfos(String)

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

GetFileSystemInfos(String, EnumerationOptions)

Извлекает массив строго типизированных объектов FileSystemInfo, представляющих файлы и подкаталоги, соответствующие указанному шаблону поиска и параметрам перечисления.

GetFileSystemInfos(String, SearchOption)

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

GetFileSystemInfos()

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

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

public System.IO.FileSystemInfo[] GetFileSystemInfos ();

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

Массив строго типизированных записей FileSystemInfo.

Исключения

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

Примеры

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

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos();

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
    {
        // Check the FSInfo parameter.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;
            }
        }
    }
}

Комментарии

Если в нет файлов или каталогов в DirectoryInfo, этот метод возвращает пустой массив. Этот метод не является рекурсивным.

Для подкаталогов FileSystemInfo объекты, возвращаемые этим методом, можно привести к производной классу DirectoryInfo. Используйте значение, FileAttributes возвращаемое свойством FileSystemInfo.Attributes , чтобы определить, представляет ли FileSystemInfo объект файл или каталог.

Этот метод предварительно заполняет значения следующих FileSystemInfo свойств:

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

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

.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

GetFileSystemInfos(String)

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

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

public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами каталогов и файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

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

Массив строго типизированных объектов FileSystemInfo, соответствующих критерию поиска.

Исключения

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

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

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

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

Примеры

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

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            Console.WriteLine("Enter a search string (for example *p*):");

            string searchString = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos(searchString);

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos, searchString);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo, string SearchString)
    {
        // Check the parameters.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }
        if (SearchString == null || SearchString.Length == 0)
        {
            throw new ArgumentNullException("SearchString");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString);
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;
            }
        }
    }
}

Комментарии

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

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

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

Этот метод не является рекурсивным.

Для подкаталогов FileSystemInfo объекты, возвращаемые этим методом, можно привести к производной классу DirectoryInfo. Используйте значение, FileAttributes возвращаемое свойством FileSystemInfo.Attributes , чтобы определить, представляет ли FileSystemInfo объект файл или каталог.

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

Строка ".." может использоваться в searchPattern , только если она указана как часть допустимого имени каталога, например в имени каталога "a.". b". Его нельзя использовать для перемещения вверх по иерархии каталогов. Если нет файлов или каталогов или файлов или каталогов, соответствующих searchPattern строке DirectoryInfoв , этот метод возвращает пустой массив.

Этот метод предварительно заполняет значения следующих FileSystemInfo свойств:

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

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

.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

GetFileSystemInfos(String, EnumerationOptions)

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

Извлекает массив строго типизированных объектов FileSystemInfo, представляющих файлы и подкаталоги, соответствующие указанному шаблону поиска и параметрам перечисления.

public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern, System.IO.EnumerationOptions enumerationOptions);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами каталогов и файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

enumerationOptions
EnumerationOptions

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

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

Массив строго типизированных объектов FileSystemInfo, соответствующих searchPattern и enumerationOptions.

Исключения

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

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

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

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

Комментарии

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

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

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

Этот метод не является рекурсивным.

Для подкаталогов FileSystemInfo объекты, возвращаемые этим методом, можно привести к производной классу DirectoryInfo. Используйте значение, FileAttributes возвращаемое свойством FileSystemInfo.Attributes , чтобы определить, представляет ли FileSystemInfo объект файл или каталог.

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

Строка ".." может использоваться в searchPattern , только если она указана как часть допустимого имени каталога, например в имени каталога "a.". b". Его нельзя использовать для перемещения вверх по иерархии каталогов. Если нет файлов или каталогов или файлов или каталогов, соответствующих searchPattern строке DirectoryInfoв , этот метод возвращает пустой массив.

Этот метод предварительно заполняет значения следующих FileSystemInfo свойств:

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

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

GetFileSystemInfos(String, SearchOption)

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

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

public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern, System.IO.SearchOption searchOption);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами каталогов и файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

searchOption
SearchOption

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

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

Массив элементов файловой системы, удовлетворяющих критериям поиска.

Исключения

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

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

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

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

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

Комментарии

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

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

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

Для подкаталогов FileSystemInfo объекты, возвращаемые этим методом, можно привести к производной классу DirectoryInfo. Используйте значение, FileAttributes возвращаемое свойством FileSystemInfo.Attributes , чтобы определить, представляет ли FileSystemInfo объект файл или каталог.

Этот метод предварительно заполняет значения следующих FileSystemInfo свойств:

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

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

.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 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