Directory.EnumerateFiles Metoda

Definicja

Zwraca wyliczalną kolekcję pełnych nazw plików, które spełniają określone kryteria.Returns an enumerable collection of full file names that meet specified criteria.

Przeciążenia

EnumerateFiles(String, String, EnumerationOptions)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania i opcji wyliczenia w określonej ścieżce, a opcjonalnie wyszukuje podkatalogi.Returns an enumerable collection of full file names that match a search pattern and enumeration options in a specified path, and optionally searches subdirectories.

EnumerateFiles(String, String, SearchOption)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania w określonej ścieżce, i opcjonalnie przeszukuje podkatalogi.Returns an enumerable collection of full file names that match a search pattern in a specified path, and optionally searches subdirectories.

EnumerateFiles(String)

Zwraca wyliczalną kolekcję pełnych nazw plików w określonej ścieżce.Returns an enumerable collection of full file names in a specified path.

EnumerateFiles(String, String)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania w określonej ścieżce.Returns an enumerable collection of full file names that match a search pattern in a specified path.

EnumerateFiles(String, String, EnumerationOptions)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania i opcji wyliczenia w określonej ścieżce, a opcjonalnie wyszukuje podkatalogi.Returns an enumerable collection of full file names that match a search pattern and enumeration options in a specified path, and optionally searches subdirectories.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do przeszukania.The relative or absolute path to the directory to search. W tym ciągu nie jest rozróżniana wielkość liter.This string is not case-sensitive.

searchPattern
String

Ciąg wyszukiwania do dopasowania do nazw plików w path.The search string to match against the names of files in path. Ten parametr może zawierać kombinację prawidłowej ścieżki literału i symboli wieloznacznych (* i?), ale nie obsługuje wyrażeń regularnych.This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

enumerationOptions
EnumerationOptions

Obiekt opisujący konfigurację wyszukiwania i wyliczania do użycia.An object that describes the search and enumeration configuration to use.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżki) dla plików w katalogu określonym przez path i zgodna z określonym wzorcem wyszukiwania i opcjami wyliczenia.An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern and enumeration options.

Wyjątki

path jest ciągiem o zerowej długości, zawiera tylko znak odstępu lub zawiera nieprawidłowe znaki.path is a zero-length string, contains only white space, or contains invalid characters. Za pomocą metody GetInvalidPathChars() można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars() method.

lub-or- searchPattern nie zawiera prawidłowego wzorca.searchPattern does not contain a valid pattern.

Parametr path ma wartość null.path is null.

lub-or- Parametr searchPattern ma wartość null.searchPattern is null.

searchOption nie jest prawidłową wartością SearchOption.searchOption is not a valid SearchOption value.

path jest nieprawidłowy, na przykład odwołujący się do niemapowanego dysku.path is invalid, such as referring to an unmapped drive.

path jest nazwą pliku.path is a file name.

Określona ścieżka, nazwa pliku lub łącznie przekracza maksymalną długość zdefiniowaną przez system.The specified path, file name, or combined exceed the system-defined maximum length.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Uwagi

searchPattern może być kombinacją znaków literału i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych.searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. Następujące specyfikatory wieloznaczne są dozwolone w searchPattern.The following wildcard specifiers are permitted in searchPattern.

Symbol wieloznacznyWildcard specifier DopasowaniaMatches
* (gwiazdka)* (asterisk) Zero lub więcej znaków w tej pozycji.Zero or more characters in that position.
?? (znak zapytania)(question mark) Zero lub jeden znak w tym położeniu.Zero or one character in that position.

Znaki inne niż symbol wieloznaczny są znakami literału.Characters other than the wildcard are literal characters. Na przykład ciąg searchPattern "*t" wyszukuje wszystkie nazwy w path kończące się literą "t".For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy w path rozpoczynające się od litery "s".The searchPattern string "s*" searches for all names in path beginning with the letter "s".

Uwaga

Gdy używasz symbolu wieloznacznego gwiazdki w searchPattern takiej jak "*. txt", liczba znaków w określonym rozszerzeniu wpłynie na wyszukiwanie w następujący sposób:When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • Jeśli określone rozszerzenie ma dokładnie trzy znaki, metoda zwraca pliki z rozszerzeniami, które zaczynają się od określonego rozszerzenia.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. Na przykład "*. xls" zwraca zarówno "Book. xls", jak i "Book. xlsx".For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • We wszystkich innych przypadkach Metoda zwraca pliki, które dokładnie pasują do określonego rozszerzenia.In all other cases, the method returns files that exactly match the specified extension. Na przykład "*. AI" zwraca wartość "file.ai", ale nie "File. AIF".For example, "*.ai" returns "file.ai" but not "file.aif".

Gdy używasz znaku wieloznacznego znaku zapytania, Metoda ta zwraca tylko pliki zgodne z określonym rozszerzeniem pliku.When you use the question mark wildcard character, this method returns only files that match the specified file extension. Na przykład, podaną dwa pliki, "plik1. txt" i "plik1. txtother", w katalogu, wzorzec wyszukiwania "plik". txt "zwraca tylko pierwszy plik, natomiast wzorzec wyszukiwania" File*. txt "zwraca oba pliki.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

searchPattern nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków.searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. Za pomocą metody GetInvalidPathChars można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars method.

Informacje o ścieżce względnej można określić za pomocą parametru path.You can specify relative path information with the path parameter. Informacje o ścieżce względnej są interpretowane jako odnoszące się do bieżącego katalogu roboczego, który można określić za pomocą metody GetCurrentDirectory.Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku korzystania z EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji; gdy używasz GetFiles, musisz poczekać, aż cała Tablica nazw ma zostać zwrócona, zanim będzie można uzyskać dostęp do tablicy.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być bardziej wydajny.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

Zwracana kolekcja nie jest buforowana; Każde wywołanie GetEnumerator w kolekcji zacznie nowe Wyliczenie.The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

EnumerateFiles(String, String, SearchOption)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania w określonej ścieżce, i opcjonalnie przeszukuje podkatalogi.Returns an enumerable collection of full file names that match a search pattern in a specified path, and optionally searches subdirectories.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do przeszukania.The relative or absolute path to the directory to search. W tym ciągu nie jest rozróżniana wielkość liter.This string is not case-sensitive.

searchPattern
String

Ciąg wyszukiwania do dopasowania do nazw plików w path.The search string to match against the names of files in path. Ten parametr może zawierać kombinację prawidłowej ścieżki literału i symboli wieloznacznych (* i?), ale nie obsługuje wyrażeń regularnych.This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

searchOption
SearchOption

Jedna z wartości wyliczenia, która określa, czy operacja wyszukiwania powinna zawierać tylko bieżący katalog, czy też powinna zawierać wszystkie podkatalogi.One of the enumeration values that specifies whether the search operation should include only the current directory or should include all subdirectories. Wartość domyślna to TopDirectoryOnly.The default value is TopDirectoryOnly.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżki) dla plików w katalogu określonym przez path i zgodna z określonym wzorcem wyszukiwania i opcją wyszukiwania.An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern and search option.

Wyjątki

path jest ciągiem o zerowej długości, zawiera tylko znak odstępu lub zawiera nieprawidłowe znaki.path is a zero-length string, contains only white space, or contains invalid characters. Za pomocą metody GetInvalidPathChars() można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars() method.

lub-or- searchPattern nie zawiera prawidłowego wzorca.searchPattern does not contain a valid pattern.

Parametr path ma wartość null.path is null.

lub-or- Parametr searchPattern ma wartość null.searchPattern is null.

searchOption nie jest prawidłową wartością SearchOption.searchOption is not a valid SearchOption value.

path jest nieprawidłowy, na przykład odwołujący się do niemapowanego dysku.path is invalid, such as referring to an unmapped drive.

path jest nazwą pliku.path is a file name.

Określona ścieżka, nazwa pliku lub łącznie przekracza maksymalną długość zdefiniowaną przez system.The specified path, file name, or combined exceed the system-defined maximum length.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Przykłady

Poniższy przykład pokazuje, jak pobrać wszystkie pliki tekstowe w katalogu i jego podkatalogach i przenieść je do nowego katalogu.The following example shows how to retrieve all the text files in a directory and its subdirectories, and move them to a new directory. Po przeniesieniu plików nie znajdują się one już w oryginalnych katalogach.After the files are moved, they no longer exist in the original directories.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

Poniższy przykład rekursywnie wylicza wszystkie pliki z rozszerzeniem. txt, odczytuje każdy wiersz pliku i wyświetla wiersz, jeśli zawiera ciąg "Microsoft".The following example recursively enumerates all files that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Microsoft".

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Xml.Linq

Module Module1

    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        Catch uAEx As UnauthorizedAccessException
            Console.WriteLine(uAEx.Message)
        Catch pathEx As PathTooLongException
            Console.WriteLine(pathEx.Message)
        End Try
    End Sub
End Module

Uwagi

searchPattern może być kombinacją znaków literału i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych.searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. Następujące specyfikatory wieloznaczne są dozwolone w searchPattern.The following wildcard specifiers are permitted in searchPattern.

Symbol wieloznacznyWildcard specifier DopasowaniaMatches
* (gwiazdka)* (asterisk) Zero lub więcej znaków w tej pozycji.Zero or more characters in that position.
?? (znak zapytania)(question mark) Zero lub jeden znak w tym położeniu.Zero or one character in that position.

Znaki inne niż symbol wieloznaczny są znakami literału.Characters other than the wildcard are literal characters. Na przykład ciąg searchPattern "*t" wyszukuje wszystkie nazwy w path kończące się literą "t".For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy w path rozpoczynające się od litery "s".The searchPattern string "s*" searches for all names in path beginning with the letter "s".

Uwaga

Gdy używasz symbolu wieloznacznego gwiazdki w searchPattern takiej jak "*. txt", liczba znaków w określonym rozszerzeniu wpłynie na wyszukiwanie w następujący sposób:When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • Jeśli określone rozszerzenie ma dokładnie trzy znaki, metoda zwraca pliki z rozszerzeniami, które zaczynają się od określonego rozszerzenia.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. Na przykład "*. xls" zwraca zarówno "Book. xls", jak i "Book. xlsx".For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • We wszystkich innych przypadkach Metoda zwraca pliki, które dokładnie pasują do określonego rozszerzenia.In all other cases, the method returns files that exactly match the specified extension. Na przykład "*. AI" zwraca wartość "file.ai", ale nie "File. AIF".For example, "*.ai" returns "file.ai" but not "file.aif".

Gdy używasz znaku wieloznacznego znaku zapytania, Metoda ta zwraca tylko pliki zgodne z określonym rozszerzeniem pliku.When you use the question mark wildcard character, this method returns only files that match the specified file extension. Na przykład, podaną dwa pliki, "plik1. txt" i "plik1. txtother", w katalogu, wzorzec wyszukiwania "plik". txt "zwraca tylko pierwszy plik, natomiast wzorzec wyszukiwania" File*. txt "zwraca oba pliki.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

searchPattern nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków.searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. Za pomocą metody GetInvalidPathChars można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars method.

Informacje o ścieżce względnej można określić za pomocą parametru path.You can specify relative path information with the path parameter. Informacje o ścieżce względnej są interpretowane jako odnoszące się do bieżącego katalogu roboczego, który można określić za pomocą metody GetCurrentDirectory.Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku korzystania z EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji; gdy używasz GetFiles, musisz poczekać, aż cała Tablica nazw ma zostać zwrócona, zanim będzie można uzyskać dostęp do tablicy.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być bardziej wydajny.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

Zwracana kolekcja nie jest buforowana; Każde wywołanie GetEnumerator w kolekcji zacznie nowe Wyliczenie.The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

EnumerateFiles(String)

Zwraca wyliczalną kolekcję pełnych nazw plików w określonej ścieżce.Returns an enumerable collection of full file names in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do przeszukania.The relative or absolute path to the directory to search. W tym ciągu nie jest rozróżniana wielkość liter.This string is not case-sensitive.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżki) dla plików w katalogu określonym przez path.An enumerable collection of the full names (including paths) for the files in the directory specified by path.

Wyjątki

path jest ciągiem o zerowej długości, zawiera tylko znak odstępu lub zawiera nieprawidłowe znaki.path is a zero-length string, contains only white space, or contains invalid characters. Za pomocą metody GetInvalidPathChars() można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars() method.

Parametr path ma wartość null.path is null.

path jest nieprawidłowy, na przykład odwołujący się do niemapowanego dysku.path is invalid, such as referring to an unmapped drive.

path jest nazwą pliku.path is a file name.

Określona ścieżka, nazwa pliku lub łącznie przekracza maksymalną długość zdefiniowaną przez system.The specified path, file name, or combined exceed the system-defined maximum length.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Przykłady

Poniższy przykład pokazuje, jak pobrać wszystkie pliki w katalogu i przenieść je do nowego katalogu.The following example shows how to retrieve all the files in a directory and move them to a new directory. Po przeniesieniu plików nie znajdują się one już w oryginalnym katalogu.After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

Poniższy przykład wylicza pliki w określonym katalogu, odczytuje każdy wiersz pliku i wyświetla wiersz, jeśli zawiera ciąg "Europa".The following example enumerates the files in the specified directory, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
            var files = from file in 
                Directory.EnumerateFiles(@"\\archives1\library\")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

Uwagi

Informacje o ścieżce względnej można określić za pomocą parametru path.You can specify relative path information with the path parameter. Informacje o ścieżce względnej są interpretowane jako odnoszące się do bieżącego katalogu roboczego, który można określić za pomocą metody GetCurrentDirectory.Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku korzystania z EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji; gdy używasz GetFiles, musisz poczekać, aż cała Tablica nazw ma zostać zwrócona, zanim będzie można uzyskać dostęp do tablicy.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być bardziej wydajny.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

Zwracana kolekcja nie jest buforowana; Każde wywołanie GetEnumerator w kolekcji zacznie nowe Wyliczenie.The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

EnumerateFiles(String, String)

Zwraca wyliczalną kolekcję pełnych nazw plików, które pasują do wzorca wyszukiwania w określonej ścieżce.Returns an enumerable collection of full file names that match a search pattern in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do przeszukania.The relative or absolute path to the directory to search. W tym ciągu nie jest rozróżniana wielkość liter.This string is not case-sensitive.

searchPattern
String

Ciąg wyszukiwania do dopasowania do nazw plików w path.The search string to match against the names of files in path. Ten parametr może zawierać kombinację prawidłowej ścieżki literału i symboli wieloznacznych (* i?), ale nie obsługuje wyrażeń regularnych.This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżki) dla plików w katalogu określonym przez path i zgodna z określonym wzorcem wyszukiwania.An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern.

Wyjątki

path jest ciągiem o zerowej długości, zawiera tylko znak odstępu lub zawiera nieprawidłowe znaki.path is a zero-length string, contains only white space, or contains invalid characters. Za pomocą metody GetInvalidPathChars() można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars() method.

lub-or- searchPattern nie zawiera prawidłowego wzorca.searchPattern does not contain a valid pattern.

Parametr path ma wartość null.path is null.

lub-or- Parametr searchPattern ma wartość null.searchPattern is null.

path jest nieprawidłowy, na przykład odwołujący się do niemapowanego dysku.path is invalid, such as referring to an unmapped drive.

path jest nazwą pliku.path is a file name.

Określona ścieżka, nazwa pliku lub łącznie przekracza maksymalną długość zdefiniowaną przez system.The specified path, file name, or combined exceed the system-defined maximum length.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Element wywołujący nie ma wymaganego uprawnienia.The caller does not have the required permission.

Przykłady

Poniższy przykład pokazuje, jak pobrać wszystkie pliki tekstowe w katalogu i przenieść je do nowego katalogu.The following example shows how to retrieve all the text files in a directory and move them to a new directory. Po przeniesieniu plików nie znajdują się one już w oryginalnym katalogu.After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

Poniższy przykład wylicza pliki w określonym katalogu, który ma rozszerzenie. txt, odczytuje każdy wiersz pliku i wyświetla wiersz, jeśli zawiera ciąg "Europa".The following example enumerates the files in the specified directory that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
            var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
            
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

Uwagi

searchPattern może być kombinacją znaków literału i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych.searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. Następujące specyfikatory wieloznaczne są dozwolone w searchPattern.The following wildcard specifiers are permitted in searchPattern.

Symbol wieloznacznyWildcard specifier DopasowaniaMatches
* (gwiazdka)* (asterisk) Zero lub więcej znaków w tej pozycji.Zero or more characters in that position.
?? (znak zapytania)(question mark) Zero lub jeden znak w tym położeniu.Zero or one character in that position.

Znaki inne niż symbol wieloznaczny są znakami literału.Characters other than the wildcard are literal characters. Na przykład ciąg searchPattern "*t" wyszukuje wszystkie nazwy w path kończące się literą "t".For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy w path rozpoczynające się od litery "s".The searchPattern string "s*" searches for all names in path beginning with the letter "s".

Uwaga

Gdy używasz symbolu wieloznacznego gwiazdki w searchPattern takiej jak "*. txt", liczba znaków w określonym rozszerzeniu wpłynie na wyszukiwanie w następujący sposób:When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • Jeśli określone rozszerzenie ma dokładnie trzy znaki, metoda zwraca pliki z rozszerzeniami, które zaczynają się od określonego rozszerzenia.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. Na przykład "*. xls" zwraca zarówno "Book. xls", jak i "Book. xlsx".For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • We wszystkich innych przypadkach Metoda zwraca pliki, które dokładnie pasują do określonego rozszerzenia.In all other cases, the method returns files that exactly match the specified extension. Na przykład "*. AI" zwraca wartość "file.ai", ale nie "File. AIF".For example, "*.ai" returns "file.ai" but not "file.aif".

Gdy używasz znaku wieloznacznego znaku zapytania, Metoda ta zwraca tylko pliki zgodne z określonym rozszerzeniem pliku.When you use the question mark wildcard character, this method returns only files that match the specified file extension. Na przykład, podaną dwa pliki, "plik1. txt" i "plik1. txtother", w katalogu, wzorzec wyszukiwania "plik". txt "zwraca tylko pierwszy plik, natomiast wzorzec wyszukiwania" File*. txt "zwraca oba pliki.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

searchPattern nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków.searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. Za pomocą metody GetInvalidPathChars można wykonywać zapytania dotyczące nieprawidłowych znaków.You can query for invalid characters by using the GetInvalidPathChars method.

Informacje o ścieżce względnej można określić za pomocą parametru path.You can specify relative path information with the path parameter. Informacje o ścieżce względnej są interpretowane jako odnoszące się do bieżącego katalogu roboczego, który można określić za pomocą metody GetCurrentDirectory.Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku korzystania z EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji; gdy używasz GetFiles, musisz poczekać, aż cała Tablica nazw ma zostać zwrócona, zanim będzie można uzyskać dostęp do tablicy.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być bardziej wydajny.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

Zwracana kolekcja nie jest buforowana; Każde wywołanie GetEnumerator w kolekcji zacznie nowe Wyliczenie.The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

Dotyczy