Directory.GetFiles Metod

Definition

Returnerar namnen på filer som uppfyller angivna villkor.

Överlagringar

Name Description
GetFiles(String)

Returnerar namnen på filer (inklusive deras sökvägar) i den angivna katalogen.

GetFiles(String, String)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret i den angivna katalogen.

GetFiles(String, String, EnumerationOptions)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret och uppräkningsalternativen i den angivna katalogen.

GetFiles(String, String, SearchOption)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret i den angivna katalogen med hjälp av ett värde för att avgöra om underkataloger ska sökas igenom.

GetFiles(String)

Returnerar namnen på filer (inklusive deras sökvägar) i den angivna katalogen.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path);
public static string[] GetFiles(string path);
static member GetFiles : string -> string[]
Public Shared Function GetFiles (path As String) As 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

String[]

En matris med fullständiga namn (inklusive sökvägar) för filerna i den angivna katalogen eller en tom matris om inga filer hittas.

Undantag

path är ett filnamn.

-eller-

Ett nätverksfel har uppstått.

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

.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 ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

path är null.

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

Den angivna sökvägen hittades inte eller är ogiltig (till exempel finns den på en ommappad enhet).

Exempel

I följande exempel visas hur du använder GetFiles metoden för att returnera filnamn från en användardefinerad plats. Exemplet är konfigurerat för att fånga upp alla fel som är gemensamma för den här metoden.

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

open System.IO

// Insert logic for processing found files here.
let processFile path =
    printfn $"Processed file '%s{path}'."

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
    // Process the list of files found in the directory.
    let fileEntries = Directory.GetFiles targetDirectory
    for fileName in fileEntries do
        processFile fileName

    // Recurse into subdirectories of this directory.
    let subdirectoryEntries = Directory.GetDirectories targetDirectory
    for subdirectory in subdirectoryEntries do
        processDirectory subdirectory

[<EntryPoint>]
let main args =
    for path in args do
        if File.Exists path then
            // This path is a file
            processFile path
        elif Directory.Exists path then
            // This path is a directory
            processDirectory path
        else
            printfn $"{path} is not a valid file or directory."
    0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists 

Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub


    ' Process all files in the directory passed in, recurse on any directories 
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub
End Class

Kommentarer

Metoderna EnumerateFiles och GetFiles skiljer sig åt på följande sätt: När du använder EnumerateFileskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetFilesmå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 EnumerateFiles .

De returnerade filnamnen läggs till i den angivna path parametern.

Den här metoden är identisk GetFiles(String, String) med med den asterisk (*) som anges som sökmönster.

Parametern path kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i GetCurrentDirectory.

Ordningen på de returnerade filnamnen garanteras inte. Sort använd metoden om en specifik sorteringsordning krävs.

Parameterns path skiftlägeskänslighet motsvarar det filsystem där koden körs. Det är till exempel skiftlägeskänsligt på NTFS (standard Windows filsystem) och skiftlägeskänsligt på Linux-filsystem.

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Se även

Gäller för

GetFiles(String, String)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret i den angivna katalogen.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path, System::String ^ searchPattern);
public static string[] GetFiles(string path, string searchPattern);
static member GetFiles : string * string -> string[]
Public Shared Function GetFiles (path As String, searchPattern As String) As 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å filerna 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

String[]

En matris med fullständiga namn (inklusive sökvägar) för filerna i den angivna katalogen som matchar det angivna sökmönstret eller en tom matris om inga filer hittas.

Undantag

path är ett filnamn.

-eller-

Ett nätverksfel har uppstått.

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

.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 ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars()av .

-eller-

searchPattern innehåller inget giltigt mönster.

path eller searchPattern är null.

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

Den angivna sökvägen hittades inte eller är ogiltig (till exempel finns den på en ommappad enhet).

Exempel

I följande exempel räknas antalet filer som börjar med den angivna bokstaven.

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());
        }
    }
}
open System.IO

try
    // Only get files that begin with the letter "c".
    let dirs = Directory.GetFiles(@"c:\", "c*")
    printfn $"The number of files starting with c is {dirs.Length}."
    for dir in dirs do
        printfn $"{dir}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get files that begin with the letter "c".
            Dim dirs As String() = Directory.GetFiles("c:\", "c*")
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Kommentarer

De returnerade filnamnen läggs till i den angivna path parametern och ordningen på de returnerade filnamnen garanteras inte. Använd Sort metoden om en specifik sorteringsordning krävs.

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 .

Note

.NET Framework only: När du använder jokertecknet asterisk i searchPattern och du anger ett filnamnstillägg med tre tecken, till exempel "*.txt", returnerar den här metoden även filer med tillägg som begin med det angivna tillägget. Sökmönstret "*.xls" returnerar till exempel både "book.xls" och "book.xlsx". Det här beteendet inträffar bara om en asterisk används i sökmönstret och filnamnstillägget är exakt tre tecken. Om du använder jokertecknet för frågetecknet någonstans i sökmönstret returnerar den här metoden endast filer som matchar det angivna filnamnstillägget exakt. Följande tabell visar den här avvikelsen i .NET Framework.

Filer i katalogen Sökmönster .NET 5+ returer .NET Framework returnerar
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

Note

Eftersom den här metoden söker mot filnamn med både filnamnsformatet 8.3 och det långa filnamnsformatet kan ett sökmönster som liknar "*1*.txt" returnera oväntade filnamn. Om du till exempel använder sökmönstret "*1*.txt" returneras "longfilename.txt" eftersom motsvarande filnamnsformat på 8,3 är "LONGFI~1.TXT".

Metoderna EnumerateFiles och GetFiles skiljer sig åt på följande sätt: När du använder EnumerateFileskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetFilesmå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 EnumerateFiles .

Parametern path kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i GetCurrentDirectory.

Parameterns path skiftlägeskänslighet motsvarar det filsystem där koden körs. Det är till exempel skiftlägeskänsligt på NTFS (standard Windows filsystem) och skiftlägeskänsligt på Linux-filsystem.

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Se även

Gäller för

GetFiles(String, String, EnumerationOptions)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret och uppräkningsalternativen i den angivna katalogen.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static string[] GetFiles(string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member GetFiles : string * string * System.IO.EnumerationOptions -> string[]
Public Shared Function GetFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As 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å filerna i path. Den här parametern kan innehålla en kombination av giltiga literaltecken och jokertecken, 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

String[]

En matris med fullständiga namn (inklusive sökvägar) för filerna i den angivna katalogen som matchar det angivna sökmönstret och uppräkningsalternativen, eller en tom matris om inga filer hittas.

Undantag

path är ett filnamn.

-eller-

Ett nätverksfel har uppstått.

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

.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 ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars()av .

-eller-

searchPattern innehåller inget giltigt mönster.

path eller searchPattern är null.

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

Den angivna sökvägen hittades inte eller är ogiltig (till exempel finns den på en ommappad enhet).

Kommentarer

De returnerade filnamnen läggs till i den angivna path parametern och ordningen på de returnerade filnamnen garanteras inte. Använd Sort metoden om en specifik sorteringsordning krävs.

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 .

Note

.NET Framework only: När du använder jokertecknet asterisk i searchPattern och du anger ett filnamnstillägg med tre tecken, till exempel "*.txt", returnerar den här metoden även filer med tillägg som begin med det angivna tillägget. Sökmönstret "*.xls" returnerar till exempel både "book.xls" och "book.xlsx". Det här beteendet inträffar bara om en asterisk används i sökmönstret och filnamnstillägget är exakt tre tecken. Om du använder jokertecknet för frågetecknet någonstans i sökmönstret returnerar den här metoden endast filer som matchar det angivna filnamnstillägget exakt. Följande tabell visar den här avvikelsen i .NET Framework.

Filer i katalogen Sökmönster .NET 5+ returer .NET Framework returnerar
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

Note

Eftersom den här metoden söker mot filnamn med både filnamnsformatet 8.3 och det långa filnamnsformatet kan ett sökmönster som liknar "*1*.txt" returnera oväntade filnamn. Om du till exempel använder sökmönstret "*1*.txt" returneras "longfilename.txt" eftersom motsvarande filnamnsformat på 8,3 är "LONGFI~1.TXT".

Metoderna EnumerateFiles och GetFiles skiljer sig åt på följande sätt: När du använder EnumerateFileskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetFilesmå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 EnumerateFiles .

Parametern path kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i GetCurrentDirectory.

Parameterns path skiftlägeskänslighet motsvarar det filsystem där koden körs. Det är till exempel skiftlägeskänsligt på NTFS (standard Windows filsystem) och skiftlägeskänsligt på Linux-filsystem.

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Gäller för

GetFiles(String, String, SearchOption)

Returnerar namnen på filer (inklusive deras sökvägar) som matchar det angivna sökmönstret i den angivna katalogen med hjälp av ett värde för att avgöra om underkataloger ska sökas igenom.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static string[] GetFiles(string path, string searchPattern, System.IO.SearchOption searchOption);
static member GetFiles : string * string * System.IO.SearchOption -> string[]
Public Shared Function GetFiles (path As String, searchPattern As String, searchOption As SearchOption) As 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å filerna 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 ska innehålla alla underkataloger eller endast den aktuella katalogen.

Returer

String[]

En matris med de fullständiga namnen (inklusive sökvägar) för filerna i den angivna katalogen som matchar det angivna sökmönstret och alternativet, eller en tom matris om inga filer hittas.

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 ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med GetInvalidPathChars() metoden.

-eller-

searchPattern innehåller inget giltigt mönster.

path eller searchPattern är null.

searchOption är inte ett giltigt SearchOption värde.

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

Den angivna sökvägen hittades inte eller är ogiltig (till exempel finns den på en ommappad enhet).

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

path är ett filnamn.

-eller-

Ett nätverksfel har uppstått.

Kommentarer

De returnerade filnamnen läggs till i den angivna parametern path och ordningen på de returnerade filnamnen garanteras inte. Använd Sort metoden om en specifik sorteringsordning krävs.

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 .

Note

.NET Framework only: När du använder jokertecknet asterisk i searchPattern och du anger ett filnamnstillägg med tre tecken, till exempel "*.txt", returnerar den här metoden även filer med tillägg som begin med det angivna tillägget. Sökmönstret "*.xls" returnerar till exempel både "book.xls" och "book.xlsx". Det här beteendet inträffar bara om en asterisk används i sökmönstret och filnamnstillägget är exakt tre tecken. Om du använder jokertecknet för frågetecknet någonstans i sökmönstret returnerar den här metoden endast filer som matchar det angivna filnamnstillägget exakt. Följande tabell visar den här avvikelsen i .NET Framework.

Filer i katalogen Sökmönster .NET 5+ returer .NET Framework returnerar
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

Note

Eftersom den här metoden söker mot filnamn med både filnamnsformatet 8.3 och det långa filnamnsformatet kan ett sökmönster som liknar "*1*.txt" returnera oväntade filnamn. Om du till exempel använder sökmönstret "*1*.txt" returneras "longfilename.txt" eftersom motsvarande filnamnsformat på 8,3 är "LONGFI~1.TXT".

Metoderna EnumerateFiles och GetFiles skiljer sig åt på följande sätt: När du använder EnumerateFileskan du börja räkna upp namnsamlingen innan hela samlingen returneras. När du använder GetFilesmå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 EnumerateFiles .

Filnamnen innehåller den fullständiga sökvägen.

Parametern path kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i GetCurrentDirectory.

Parameterns path skiftlägeskänslighet motsvarar det filsystem där koden körs. Det är till exempel skiftlägeskänsligt på NTFS (standard Windows filsystem) och skiftlägeskänsligt på Linux-filsystem.

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Se även

Gäller för