DirectoryInfo.GetFileSystemInfos Method (String)

Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search criteria.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)

Public Function GetFileSystemInfos ( _
	searchPattern As String _
) As FileSystemInfo()


Type: System.String

The search string to match against the names of directories and files. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters (see Remarks), but doesn't support regular expressions. The default pattern is "*", which returns all files.

Return Value

Type: System.IO.FileSystemInfo()
An array of strongly typed FileSystemInfo objects matching the search criteria.


searchPattern contains one or more invalid characters defined by the GetInvalidPathChars method.


searchPattern is Nothing.


The specified path is invalid (for example, it is on an unmapped drive).


The caller does not have the required permission.

searchPattern can be a combination of literal and wildcard characters, but doesn't support regular expressions. The following wildcard specifiers are permitted in searchPattern.

Wildcard specifier


* (asterisk)

Zero or more characters in that position.

? (question mark)

Zero or one character in that position.

Characters other than the wildcard are literal characters. For example, the string "*t" searches for all names in ending with the letter "t". ". The searchPattern string "s*" searches for all names in path beginning with the letter "s".

This method is not recursive.

For subdirectories, the FileSystemInfo objects returned by this method can be cast to the derived class DirectoryInfo. Use the FileAttributes value returned by the FileSystemInfo.Attributes property to determine whether the FileSystemInfo represents a file or a directory.

Wild cards are permitted. For example, the searchPattern string "*t" searches for all directory names in path ending with the letter "t". The searchPattern string "s*" searches for all directory names in path beginning with the letter "s".

The string ".." can only be used in searchPattern if it is specified as a part of a valid directory name, such as in the directory name "a..b". It cannot be used to move up the directory hierarchy. If there are no files or directories, or no files or directories that match the searchPattern string in the DirectoryInfo, this method returns an empty array.

This method pre-populates the values of the following FileSystemInfo properties:

The following example counts the files and directories that match the specified search pattern.

Imports System
Imports System.IO

Module DirectoryFileCount

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

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


            ' 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

        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

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft