Directory.EnumerateDirectories Metod

Definition

Returnerar en uppräkningsbar samling med fullständiga katalognamn som uppfyller angivna villkor.

Överlagringar

Name Description
EnumerateDirectories(String)

Returnerar en uppräkningsbar samling med fullständiga katalognamn i en angiven sökväg.

EnumerateDirectories(String, String)

Returnerar en uppräkningsbar samling med fullständiga katalognamn som matchar ett sökmönster i en angiven sökväg.

EnumerateDirectories(String, String, EnumerationOptions)

Returnerar en uppräkningsbar samling med katalogens fullständiga namn som matchar ett sökmönster i en angiven sökväg och söker eventuellt i underkataloger.

EnumerateDirectories(String, String, SearchOption)

Returnerar en uppräkningsbar samling med fullständiga katalognamn som matchar ett sökmönster i en angiven sökväg och söker eventuellt efter underkataloger.

EnumerateDirectories(String)

Returnerar en uppräkningsbar samling med fullständiga katalognamn i en angiven sökväg.

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

Parametrar

path
String

Den relativa eller absoluta sökvägen till katalogen som ska sökas. Den här strängen är inte skiftlägeskänslig.

Returer

En uppräkningsbar samling med fullständiga namn (inklusive sökvägar) för katalogerna i katalogen som anges av path.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

path är null.

path är ogiltigt, till exempel refererar till en ommappad enhet.

path är ett filnamn.

Den angivna sökvägen, filnamnet eller kombinerade överskrider den systemdefinierade maximala längden.

Anroparen har inte den behörighet som krävs.

Anroparen har inte den behörighet som krävs.

Exempel

I följande exempel räknas de översta katalogerna upp i en angiven sökväg.

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

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

            List<string> dirs = new List<string>(Directory.EnumerateDirectories(docPath));

            foreach (var dir in dirs)
            {
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
            }
            Console.WriteLine($"{dirs.Count} directories found.");
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch (PathTooLongException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
open System
open System.IO

try
    // Set a variable to the My Documents path.
    let docPath = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments

    let dirs = Directory.EnumerateDirectories docPath |> Seq.toList

    for dir in dirs do
        printfn $"{dir.Substring(dir.LastIndexOf Path.DirectorySeparatorChar + 1)}"
    printfn $"{dirs.Length} directories found."

with
| :? UnauthorizedAccessException as ex ->
    printfn $"{ex.Message}"
| :? PathTooLongException as ex ->
    printfn $"{ex.Message}"
Imports System.Collections.Generic
Imports System.IO

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

            Dim dirs As List(Of String) = New List(Of String)(Directory.EnumerateDirectories(dirPath))

            For Each folder In dirs
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}")
            Next
            Console.WriteLine($"{dirs.Count} directories found.")
        Catch ex As UnauthorizedAccessException
            Console.WriteLine(ex.Message)
        Catch ex As PathTooLongException
            Console.WriteLine(ex.Message)
        End Try

    End Sub
End Module

Kommentarer

Du kan ange relativ eller absolut sökvägsinformation i parametern path . Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen, vilket du kan avgöra med hjälp GetCurrentDirectory av metoden. De returnerade katalognamnen är prefixet med det värde som du angav i parametern path . Om du till exempel anger en relativ sökväg i parametern path innehåller de returnerade katalognamnen en relativ sökväg.

Metoderna EnumerateDirectories och GetDirectories skiljer sig åt på följande sätt: När du använder EnumerateDirectorieskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetDirectoriesmåste du vänta tills hela matrisen med namn returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .

Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator i samlingen startar en ny uppräkning.

Gäller för

EnumerateDirectories(String, String)

Returnerar en uppräkningsbar samling med fullständiga katalognamn som matchar ett sökmönster i en angiven sökväg.

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

Parametrar

path
String

Den relativa eller absoluta sökvägen till katalogen som ska sökas. Den här strängen är inte skiftlägeskänslig.

searchPattern
String

Söksträngen som ska matchas mot namnen på katalogerna i path. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.

Returer

En uppräkningsbar samling med fullständiga namn (inklusive sökvägar) för katalogerna i katalogen som anges av path och som matchar det angivna sökmönstret.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ogiltiga tecken. Du kan fråga efter ogiltiga tecken med GetInvalidPathChars() metoden.

-eller-

searchPattern innehåller inget giltigt mönster.

path är null.

-eller-

searchPattern är null.

path är ogiltigt, till exempel refererar till en ommappad enhet.

path är ett filnamn.

Den angivna sökvägen, filnamnet eller kombinerade överskrider den systemdefinierade maximala längden.

Anroparen har inte den behörighet som krävs.

Anroparen har inte den behörighet som krävs.

Exempel

I följande exempel räknas de översta katalogerna upp i en angiven sökväg som matchar ett angivet sökmönster.

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

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*")
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs = 
        Directory.EnumerateDirectories(dirPath, "dv_*")
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a list collection.
    let workDirs = Seq.toList dirs
    ()
    
with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*")
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Kommentarer

searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.

Jokerteckensspecificerare Matcher
* (asterisk) Noll eller fler tecken i den positionen.
? (frågetecken) Exakt ett tecken i den positionen.

Andra tecken än jokertecknet är literaltecken. Strängen searchPattern "*t" söker till exempel efter alla namn som path slutar med bokstaven "t". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".

searchPattern kan inte sluta i två perioder ("..") eller innehålla två punkter ("..") följt av DirectorySeparatorChar eller AltDirectorySeparatorChar, och kan inte heller innehålla ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars av metoden .

Du kan ange relativ eller absolut sökvägsinformation i parametern path . Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen, vilket du kan avgöra med hjälp GetCurrentDirectory av metoden. De returnerade katalognamnen är prefixet med det värde som du angav i parametern path . Om du till exempel anger en relativ sökväg i parametern path innehåller de returnerade katalognamnen en relativ sökväg.

Metoderna EnumerateDirectories och GetDirectories skiljer sig åt på följande sätt: När du använder EnumerateDirectorieskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetDirectoriesmåste du vänta tills hela matrisen med namn returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .

Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator i samlingen startar en ny uppräkning.

Gäller för

EnumerateDirectories(String, String, EnumerationOptions)

Returnerar en uppräkningsbar samling med katalogens fullständiga namn som matchar ett sökmönster i en angiven sökväg och söker eventuellt i underkataloger.

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

Parametrar

path
String

Den relativa eller absoluta sökvägen till katalogen som ska sökas. Den här strängen är inte skiftlägeskänslig.

searchPattern
String

Söksträngen som ska matchas mot namnen på katalogerna i path. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.

enumerationOptions
EnumerationOptions

Ett objekt som beskriver den sök- och uppräkningskonfiguration som ska användas.

Returer

En uppräkningsbar samling med fullständiga namn (inklusive sökvägar) för katalogerna i katalogen som anges av path och som matchar det angivna sökmönstret och uppräkningsalternativen.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

-eller-

searchPattern innehåller inget giltigt mönster.

path eller searchPattern är null.

path är ogiltigt, till exempel refererar till en ommappad enhet.

path är ett filnamn.

Den angivna sökvägen, filnamnet eller kombinerade överskrider den systemdefinierade maximala längden.

Anroparen har inte den behörighet som krävs.

Anroparen har inte den behörighet som krävs.

Kommentarer

searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.

Jokerteckensspecificerare Matcher
* (asterisk) Noll eller fler tecken i den positionen.
? (frågetecken) Exakt ett tecken i den positionen.

Andra tecken än jokertecknet är literaltecken. Strängen searchPattern "*t" söker till exempel efter alla namn som path slutar med bokstaven "t". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".

searchPattern kan inte sluta i två perioder ("..") eller innehålla två punkter ("..") följt av DirectorySeparatorChar eller AltDirectorySeparatorChar, och kan inte heller innehålla ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars av metoden .

Du kan ange relativ eller absolut sökvägsinformation i parametern path . Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen, vilket du kan avgöra med hjälp GetCurrentDirectory av metoden. De returnerade katalognamnen är prefixet med det värde som du angav i parametern path . Om du till exempel anger en relativ sökväg i parametern path innehåller de returnerade katalognamnen en relativ sökväg.

Metoderna EnumerateDirectories och GetDirectories skiljer sig åt på följande sätt: När du använder EnumerateDirectorieskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetDirectoriesmåste du vänta tills hela matrisen med namn returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .

Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator i samlingen startar en ny uppräkning.

Gäller för

EnumerateDirectories(String, String, SearchOption)

Returnerar en uppräkningsbar samling med fullständiga katalognamn som matchar ett sökmönster i en angiven sökväg och söker eventuellt efter underkataloger.

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

Parametrar

path
String

Den relativa eller absoluta sökvägen till katalogen som ska sökas. Den här strängen är inte skiftlägeskänslig.

searchPattern
String

Söksträngen som ska matchas mot namnen på katalogerna i path. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.

searchOption
SearchOption

Ett av uppräkningsvärdena som anger om sökåtgärden endast ska innehålla den aktuella katalogen eller ska innehålla alla underkataloger. Standardvärdet är TopDirectoryOnly.

Returer

En uppräkningsbar samling med fullständiga namn (inklusive sökvägar) för katalogerna i katalogen som anges av path och som matchar det angivna sökmönstret och sökalternativet.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

-eller-

searchPattern innehåller inget giltigt mönster.

path är null.

-eller-

searchPattern är null.

searchOption är inte ett giltigt SearchOption värde.

path är ogiltigt, till exempel refererar till en ommappad enhet.

path är ett filnamn.

Den angivna sökvägen, filnamnet eller kombinerade överskrider den systemdefinierade maximala längden.

Anroparen har inte den behörighet som krävs.

Anroparen har inte den behörighet som krävs.

Exempel

I följande exempel räknas kataloger upp i en angiven sökväg som matchar ett angivet sökmönster. Den använder parametern searchOption för att ange att alla underkataloger ska ingå i sökningen.

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

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*",
                        SearchOption.AllDirectories)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs =
        Directory.EnumerateDirectories(dirPath, "dv_*", SearchOption.AllDirectories)
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a List collection.
    let workDirs = Seq.toList dirs
    ()

with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*", _
                    SearchOption.AllDirectories)
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Kommentarer

searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.

Jokerteckensspecificerare Matcher
* (asterisk) Noll eller fler tecken i den positionen.
? (frågetecken) Exakt ett tecken i den positionen.

Andra tecken än jokertecknet är literaltecken. Strängen searchPattern "*t" söker till exempel efter alla namn som path slutar med bokstaven "t". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".

searchPattern kan inte sluta i två perioder ("..") eller innehålla två punkter ("..") följt av DirectorySeparatorChar eller AltDirectorySeparatorChar, och kan inte heller innehålla ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars av metoden .

Du kan ange relativ eller absolut sökvägsinformation i parametern path . Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen, vilket du kan avgöra med hjälp GetCurrentDirectory av metoden. De returnerade katalognamnen är prefixet med det värde som du angav i parametern path . Om du till exempel anger en relativ sökväg i parametern path innehåller de returnerade katalognamnen en relativ sökväg.

Metoderna EnumerateDirectories och GetDirectories skiljer sig åt på följande sätt: När du använder EnumerateDirectorieskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetDirectoriesmåste du vänta tills hela matrisen med namn returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .

Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator i samlingen startar en ny uppräkning.

Gäller för