DirectoryInfo.GetFileSystemInfos Metoda

Definicja

Pobiera tablicę silnie typiowanych FileSystemInfo obiektów reprezentujących pliki i podkatalogi bieżącego katalogu.

Przeciążenia

GetFileSystemInfos()

Zwraca tablicę silnie typiowanych FileSystemInfo wpisów reprezentujących wszystkie pliki i podkatalogi w katalogu.

GetFileSystemInfos(String)

Pobiera tablicę silnie typiowanych FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonymi kryteriami wyszukiwania.

GetFileSystemInfos(String, EnumerationOptions)

Pobiera tablicę silnie typiowanych FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonym wzorcem wyszukiwania i opcjami wyliczania.

GetFileSystemInfos(String, SearchOption)

Pobiera tablicę FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonymi kryteriami wyszukiwania.

GetFileSystemInfos()

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Zwraca tablicę silnie typiowanych FileSystemInfo wpisów reprezentujących wszystkie pliki i podkatalogi w katalogu.

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

Zwraca

Tablica silnie typiowanych FileSystemInfo wpisów.

Wyjątki

Ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Przykłady

Poniższy przykład zlicza pliki i katalogi w określonym katalogu.

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

Uwagi

Jeśli w obiekcie DirectoryInfonie ma żadnych plików ani katalogów, ta metoda zwraca pustą tablicę. Ta metoda nie jest rekursywna.

W przypadku podkatalogów FileSystemInfo obiekty zwrócone przez tę metodę można rzutować do klasy DirectoryInfopochodnej . FileAttributes Użyj wartości zwracanej przez FileSystemInfo.Attributes właściwość , aby określić, czy FileSystemInfo reprezentuje plik, czy katalog.

Ta metoda wstępnie wypełnia wartości następujących FileSystemInfo właściwości:

Zobacz też

Dotyczy

GetFileSystemInfos(String)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Pobiera tablicę silnie typiowanych FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonymi kryteriami wyszukiwania.

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()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów i plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

Zwraca

Tablica silnie typiowanych FileSystemInfo obiektów spełniających kryteria wyszukiwania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

Określona ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

Poniższy przykład zlicza pliki i katalogi zgodne z określonym wzorcem wyszukiwania.

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

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Zero lub jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

Ta metoda nie jest rekursywna.

W przypadku podkatalogów FileSystemInfo obiekty zwrócone przez tę metodę można rzutować do klasy DirectoryInfopochodnej . FileAttributes Użyj wartości zwracanej przez FileSystemInfo.Attributes właściwość , aby określić, czy FileSystemInfo reprezentuje plik, czy katalog.

Dozwolone są symbole wieloznaczne. Na przykład searchPattern ciąg "*t" wyszukuje wszystkie nazwy katalogów path kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy katalogów na path początku literą "s".

Ciąg ".." może być używany tylko wtedy searchPattern , gdy jest określony jako część prawidłowej nazwy katalogu, na przykład w nazwie katalogu "a.". b". Nie można jej użyć do przeniesienia hierarchii katalogów w górę. Jeśli nie ma żadnych plików lub katalogów albo brak plików lub katalogów pasujących do searchPattern ciągu w metodzie DirectoryInfo, ta metoda zwraca pustą tablicę.

Ta metoda wstępnie wypełnia wartości następujących FileSystemInfo właściwości:

Zobacz też

Dotyczy

GetFileSystemInfos(String, EnumerationOptions)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Pobiera tablicę silnie typiowanych FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonym wzorcem wyszukiwania i opcjami wyliczania.

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()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów i plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

enumerationOptions
EnumerationOptions

Obiekt opisujący konfigurację wyszukiwania i wyliczenia do użycia.

Zwraca

Tablica silnie typiowanych FileSystemInfo obiektów pasujących searchPattern i enumerationOptions.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

Określona ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Zero lub jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

Ta metoda nie jest rekursywna.

W przypadku podkatalogów FileSystemInfo obiekty zwrócone przez tę metodę można rzutować do klasy DirectoryInfopochodnej . FileAttributes Użyj wartości zwracanej przez FileSystemInfo.Attributes właściwość , aby określić, czy FileSystemInfo reprezentuje plik, czy katalog.

Dozwolone są symbole wieloznaczne. Na przykład searchPattern ciąg "*t" wyszukuje wszystkie nazwy katalogów path kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy katalogów na path początku literą "s".

Ciąg ".." może być używany tylko wtedy searchPattern , gdy jest określony jako część prawidłowej nazwy katalogu, na przykład w nazwie katalogu "a.". b". Nie można jej użyć do przeniesienia hierarchii katalogów w górę. Jeśli nie ma żadnych plików lub katalogów albo brak plików lub katalogów pasujących do searchPattern ciągu w metodzie DirectoryInfo, ta metoda zwraca pustą tablicę.

Ta metoda wstępnie wypełnia wartości następujących FileSystemInfo właściwości:

Dotyczy

GetFileSystemInfos(String, SearchOption)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Pobiera tablicę FileSystemInfo obiektów reprezentujących pliki i podkatalogi zgodne z określonymi kryteriami wyszukiwania.

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()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów i plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

searchOption
SearchOption

Jedna z wartości wyliczenia określająca, czy operacja wyszukiwania powinna zawierać tylko bieżący katalog, czy wszystkie podkatalogi. Wartość domyślna to TopDirectoryOnly.

Zwraca

Tablica wpisów systemu plików spełniających kryteria wyszukiwania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

searchOption jest nieprawidłową SearchOption wartością.

Określona ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Zero lub jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

W przypadku podkatalogów FileSystemInfo obiekty zwrócone przez tę metodę można rzutować do klasy DirectoryInfopochodnej . FileAttributes Użyj wartości zwracanej przez FileSystemInfo.Attributes właściwość , aby określić, czy FileSystemInfo reprezentuje plik, czy katalog.

Ta metoda wstępnie wypełnia wartości następujących FileSystemInfo właściwości:

Zobacz też

Dotyczy