DirectoryInfo.GetFileSystemInfos Metod

Definition

Hämtar en matris med starkt typerade FileSystemInfo objekt som representerar filer och underkataloger för den aktuella katalogen.

Överlagringar

Name Description
GetFileSystemInfos()

Returnerar en matris med starkt inskrivna FileSystemInfo poster som representerar alla filer och underkataloger i en katalog.

GetFileSystemInfos(String)

Hämtar en matris med starkt inskrivna FileSystemInfo objekt som representerar de filer och underkataloger som matchar de angivna sökvillkoren.

GetFileSystemInfos(String, EnumerationOptions)

Hämtar en matris med starkt typerade FileSystemInfo objekt som representerar de filer och underkataloger som matchar det angivna sökmönstret och uppräkningsalternativen.

GetFileSystemInfos(String, SearchOption)

Hämtar en matris med FileSystemInfo objekt som representerar de filer och underkataloger som matchar de angivna sökvillkoren.

GetFileSystemInfos()

Returnerar en matris med starkt inskrivna FileSystemInfo poster som representerar alla filer och underkataloger i en katalog.

public:
 cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos();
public System.IO.FileSystemInfo[] GetFileSystemInfos();
member this.GetFileSystemInfos : unit -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos () As FileSystemInfo()

Returer

En matris med starkt inskrivna FileSystemInfo poster.

Undantag

Sökvägen är ogiltig (den finns till exempel på en ommappad enhet).

Exempel

I följande exempel räknas filerna och katalogerna under den angivna katalogen.

using System;
using System.IO;

class DirectoryFileCount
{

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

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

            string directory = Console.ReadLine();

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

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

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

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

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

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

            Console.ReadLine();
        }
    }

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

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

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

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

let mutable files = 0
let mutable directories = 0

let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) =
    // Check the FSInfo parameter.
    if fsInfo = null then
        nullArg "fsInfo"

    // Iterate through each item.
    for i in fsInfo do
        // Check to see if this is a DirectoryInfo object.
        match i with 
        | :? DirectoryInfo as dInfo ->
            // Add one to the directory count.
            directories <- directories + 1

            // Iterate through all sub-directories.
            listDirectoriesAndFiles (dInfo.GetFileSystemInfos())
        // Check to see if this is a FileInfo object.
        | :? FileInfo ->
            // Add one to the file count.
            files <- files + 1
        | _ -> ()

try
    printfn "Enter the path to a directory:"

    let directory = stdin.ReadLine()

    // Create a new DirectoryInfo object.
    let dir = DirectoryInfo directory

    if not dir.Exists then
        raise (DirectoryNotFoundException "The directory does not exist.")

    // Call the GetFileSystemInfos method.
    let infos = dir.GetFileSystemInfos()

    printfn "Working..."

    // Pass the result to the ListDirectoriesAndFiles
    // method defined below.
    listDirectoriesAndFiles infos

    // Display the results to the console.
    printfn $"Directories: {directories}"
    printfn $"Files: {files}"
with e ->
    printfn $"{e.Message}"
Imports System.IO



Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0



    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos()

            Console.WriteLine("Working...")

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

            ' Display the results to the console. 
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub


    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo)
        ' Check the FSInfo parameter.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos())
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    End Sub
End Module

Kommentarer

Om det inte finns några filer eller kataloger i returnerar den DirectoryInfohär metoden en tom matris. Den här metoden är inte rekursiv.

För underkataloger kan objekt som FileSystemInfo returneras av den här metoden omvandlas till den härledda klassen DirectoryInfo. Använd värdet FileAttributes som returneras av FileSystemInfo.Attributes egenskapen för att avgöra om FileSystemInfo representerar en fil eller en katalog.

Den här metoden fyller i värdena för följande FileSystemInfo egenskaper i förväg:

Se även

Gäller för

GetFileSystemInfos(String)

Hämtar en matris med starkt inskrivna FileSystemInfo objekt som representerar de filer och underkataloger som matchar de angivna sökvillkoren.

public:
 cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern);
public System.IO.FileSystemInfo[] GetFileSystemInfos(string searchPattern);
member this.GetFileSystemInfos : string -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String) As FileSystemInfo()

Parametrar

searchPattern
String

Söksträngen som ska matchas mot namnen på kataloger och filer. 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 matris med starkt inskrivna FileSystemInfo objekt som matchar sökvillkoren.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: searchPattern innehåller ett eller flera ogiltiga tecken som definierats av metoden GetInvalidPathChars().

searchPattern är null.

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

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

Exempel

I följande exempel räknas de filer och kataloger som matchar det angivna sökmönstret.

using System;
using System.IO;

class DirectoryFileCount
{

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

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

            string directory = Console.ReadLine();

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

            string searchString = Console.ReadLine();

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

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

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

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

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

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

            Console.ReadLine();
        }
    }

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

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

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

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

let mutable files = 0
let mutable directories = 0

let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) searchString =
    // Check the parameters.
    if fsInfo = null then
        nullArg "fsInfo"

    if String.IsNullOrEmpty searchString then
        invalidArg "searchString" "Search string cannot be empty."
    
    // Iterate through each item.
    for i in fsInfo do
        // Check to see if this is a DirectoryInfo object.
        match i with
        | :? DirectoryInfo as dInfo ->
            // Add one to the directory count.
            directories <- directories + 1

            // Iterate through all sub-directories.
            listDirectoriesAndFiles (dInfo.GetFileSystemInfos searchString) searchString
        // Check to see if this is a FileInfo object.
        | :? FileInfo ->
            // Add one to the file count.
            files <- files + 1
        | _ -> ()

try
    printfn "Enter the path to a directory:"

    let directory = stdin.ReadLine()

    printfn "Enter a search string (for example *p*):"

    let searchString = stdin.ReadLine()

    // Create a new DirectoryInfo object.
    let dir = DirectoryInfo directory

    if not dir.Exists then
        raise (DirectoryNotFoundException "The directory does not exist.")

    // Call the GetFileSystemInfos method.
    let infos = dir.GetFileSystemInfos searchString

    printfn "Working..."

    // Pass the result to the ListDirectoriesAndFiles
    // method defined below.
    listDirectoriesAndFiles infos searchString

    // Display the results to the console.
    printfn $"Directories: {directories}"
    printfn $"Files: {files}"
with e ->
    printfn $"{e.Message}"
Imports System.IO



Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0



    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

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

            Dim searchString As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos(searchString)

            Console.WriteLine("Working...")

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

            ' Display the results to the console. 
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub


    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo, ByVal SearchString As String)
        ' Check the parameters.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If
        If SearchString Is Nothing OrElse SearchString.Length = 0 Then
            Throw New ArgumentNullException("SearchString")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString)
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    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) Noll eller ett tecken i den positionen.

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

Den här metoden är inte rekursiv.

För underkataloger kan objekt som FileSystemInfo returneras av den här metoden omvandlas till den härledda klassen DirectoryInfo. Använd värdet FileAttributes som returneras av FileSystemInfo.Attributes egenskapen för att avgöra om FileSystemInfo representerar en fil eller en katalog.

Jokertecken är tillåtna. Strängen searchPattern "*t" söker till exempel efter alla katalognamn som path slutar med bokstaven "t". Strängen searchPattern "s*" söker efter alla katalognamn från path och med bokstaven "s".

Strängen ".." kan endast användas i searchPattern om den anges som en del av ett giltigt katalognamn, till exempel i katalognamnet "a.. b". Den kan inte användas för att flytta upp kataloghierarkin. Om det inte finns några filer eller kataloger, eller inga filer eller kataloger som matchar strängen searchPatternDirectoryInfoi , returnerar den här metoden en tom matris.

Den här metoden fyller i värdena för följande FileSystemInfo egenskaper i förväg:

Se även

Gäller för

GetFileSystemInfos(String, EnumerationOptions)

Hämtar en matris med starkt typerade FileSystemInfo objekt som representerar de filer och underkataloger som matchar det angivna sökmönstret och uppräkningsalternativen.

public:
 cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.IO.FileSystemInfo[] GetFileSystemInfos(string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.GetFileSystemInfos : string * System.IO.EnumerationOptions -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String, enumerationOptions As EnumerationOptions) As FileSystemInfo()

Parametrar

searchPattern
String

Söksträngen som ska matchas mot namnen på kataloger och filer. 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 matris med starkt typerade objekt som FileSystemInfo matchar searchPattern och enumerationOptions.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: searchPattern innehåller ett eller flera ogiltiga tecken som definierats av metoden GetInvalidPathChars().

searchPattern är null.

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

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) Noll eller ett tecken i den positionen.

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

Den här metoden är inte rekursiv.

För underkataloger kan objekt som FileSystemInfo returneras av den här metoden omvandlas till den härledda klassen DirectoryInfo. Använd värdet FileAttributes som returneras av FileSystemInfo.Attributes egenskapen för att avgöra om FileSystemInfo representerar en fil eller en katalog.

Jokertecken är tillåtna. Strängen searchPattern "*t" söker till exempel efter alla katalognamn som path slutar med bokstaven "t". Strängen searchPattern "s*" söker efter alla katalognamn från path och med bokstaven "s".

Strängen ".." kan endast användas i searchPattern om den anges som en del av ett giltigt katalognamn, till exempel i katalognamnet "a.. b". Den kan inte användas för att flytta upp kataloghierarkin. Om det inte finns några filer eller kataloger, eller inga filer eller kataloger som matchar strängen searchPatternDirectoryInfoi , returnerar den här metoden en tom matris.

Den här metoden fyller i värdena för följande FileSystemInfo egenskaper i förväg:

Gäller för

GetFileSystemInfos(String, SearchOption)

Hämtar en matris med FileSystemInfo objekt som representerar de filer och underkataloger som matchar de angivna sökvillkoren.

public:
 cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.IO.FileSystemInfo[] GetFileSystemInfos(string searchPattern, System.IO.SearchOption searchOption);
member this.GetFileSystemInfos : string * System.IO.SearchOption -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String, searchOption As SearchOption) As FileSystemInfo()

Parametrar

searchPattern
String

Söksträngen som ska matchas mot namnen på kataloger och filer. 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 alla underkataloger. Standardvärdet är TopDirectoryOnly.

Returer

En matris med filsystemposter som matchar sökvillkoren.

Undantag

.NET Framework- och .NET Core-versioner som är äldre än 2.1: searchPattern innehåller ett eller flera ogiltiga tecken som definierats av metoden GetInvalidPathChars().

searchPattern är null.

searchOption är inte ett giltigt SearchOption värde.

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

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) Noll eller ett tecken i den positionen.

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

För underkataloger kan objekt som FileSystemInfo returneras av den här metoden omvandlas till den härledda klassen DirectoryInfo. Använd värdet FileAttributes som returneras av FileSystemInfo.Attributes egenskapen för att avgöra om FileSystemInfo representerar en fil eller en katalog.

Den här metoden fyller i värdena för följande FileSystemInfo egenskaper i förväg:

Se även

Gäller för