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

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


Directory.GetFiles Метод

Определение

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

Перегрузки

GetFiles(String)

Возвращает имена файлов (с указанием пути к ним) в указанном каталоге.

GetFiles(String, String)

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

GetFiles(String, String, EnumerationOptions)

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

GetFiles(String, String, SearchOption)

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

GetFiles(String)

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

Возвращает имена файлов (с указанием пути к ним) в указанном каталоге.

public static string[] GetFiles (string path);

Параметры

path
String

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

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

String[]

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

Исключения

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

-или-

Произошла сетевая ошибка.

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

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

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

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

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

Примеры

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

// 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);	
    }
}

Комментарии

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

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

Этот метод идентичен GetFiles(String, String) звездочку (*), указанную в качестве шаблона поиска.

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

Порядок возвращаемых имен файлов не гарантируется; используйте метод , Sort если требуется определенный порядок сортировки.

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

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

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

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

Продукт Версии

GetFiles(String, String)

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

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

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

Параметры

path
String

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

searchPattern
String

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

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

String[]

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

Исключения

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

-или-

Произошла сетевая ошибка.

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

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

-или-

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

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

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

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

Примеры

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

using System;
using System.IO;

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

Комментарии

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

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

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

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

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

Примечание

Только .NET Framework: Если вы используете подстановочный знак звездочки в searchPattern и указываете расширение файла из трех символов, например "*.txt", этот метод также возвращает файлы с расширениями, начинающимися с указанного расширения. Например, шаблон поиска "*.xls" возвращает значения "book.xls" и "book.xlsx". Это происходит только в том случае, если в шаблоне поиска используется звездочка, а предоставленное расширение файла содержит ровно три символа. Если в шаблоне поиска используется подстановочный знак вопросительного знака, этот метод возвращает только те файлы, которые точно соответствуют указанному расширению файла. В следующей таблице показана эта аномалия в .NET Framework.

Файлы в каталоге Шаблон поиска .NET 5 и более поздних версий возвращает .NET Framework возвращает
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

Примечание

Так как этот метод проверяет имена файлов как в формате 8.3, так и в формате длинного имени файла, шаблон поиска, аналогичный "*1*.txt", может возвращать непредвиденные имена файлов. Например, при использовании шаблона поиска "*1*.txt" возвращается "longfilename.txt", так как эквивалентным форматом имени файла 8.3 является "LONGFI~1.TXT".

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

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

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

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

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

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

Продукт Версии

GetFiles(String, String, EnumerationOptions)

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

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

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

Параметры

path
String

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

searchPattern
String

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

enumerationOptions
EnumerationOptions

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

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

String[]

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

Исключения

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

-или-

Произошла сетевая ошибка.

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

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

-или-

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

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

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

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

Комментарии

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

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

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

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

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

Примечание

Только .NET Framework: При использовании подстановочного знака звездочки в и searchPattern указании расширения файла из трех символов, например "*.txt", этот метод также возвращает файлы с расширениями, начинающимися с указанного расширения. Например, шаблон поиска "*.xls" возвращает как "book.xls", так и "book.xlsx". Это происходит только в том случае, если в шаблоне поиска используется звездочка, а расширение файла содержит ровно три символа. Если в шаблоне поиска используется подстановочный знак вопросительного знака, этот метод возвращает только файлы, которые точно соответствуют указанному расширению файла. В следующей таблице показана эта аномалия в .NET Framework.

Файлы в каталоге Шаблон поиска .NET 5+ возвращает .NET Framework возвращает
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

Примечание

Так как этот метод проверяет имена файлов как в формате 8.3, так и в формате длинного имени файла, шаблон поиска, аналогичный "*1*.txt", может возвращать непредвиденные имена файлов. Например, при использовании шаблона поиска "*1*.txt" возвращается "longfilename.txt", так как эквивалентным форматом имени файла 8.3 является "LONGFI~1.TXT".

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

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

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

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

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

Продукт Версии

GetFiles(String, String, SearchOption)

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

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

public static string[] GetFiles (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 — это имя файла.

-или-

Произошла сетевая ошибка.

Комментарии

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

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

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

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

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

Примечание

Только .NET Framework: При использовании подстановочного знака звездочки в и searchPattern указании расширения файла из трех символов, например "*.txt", этот метод также возвращает файлы с расширениями, начинающимися с указанного расширения. Например, шаблон поиска "*.xls" возвращает как "book.xls", так и "book.xlsx". Это происходит только в том случае, если в шаблоне поиска используется звездочка, а расширение файла содержит ровно три символа. Если в шаблоне поиска используется подстановочный знак вопросительного знака, этот метод возвращает только файлы, которые точно соответствуют указанному расширению файла. В следующей таблице показана эта аномалия в .NET Framework.

Файлы в каталоге Шаблон поиска .NET 5+ возвращает .NET Framework возвращает
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

Примечание

Так как этот метод проверяет имена файлов как в формате 8.3, так и в формате длинного имени файла, шаблон поиска, аналогичный "*1*.txt", может возвращать непредвиденные имена файлов. Например, при использовании шаблона поиска "*1*.txt" возвращается "longfilename.txt", так как эквивалентным форматом имени файла 8.3 является "LONGFI~1.TXT".

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

Имена файлов включают полный путь.

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

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

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

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

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

Продукт Версии