DirectoryInfo.GetFileSystemInfos Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Retrieves an array of strongly typed FileSystemInfo objects representing files and subdirectories of the current directory.
Overloads
GetFileSystemInfos() |
Returns an array of strongly typed FileSystemInfo entries representing all the files and subdirectories in a directory. |
GetFileSystemInfos(String) |
Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search criteria. |
GetFileSystemInfos(String, EnumerationOptions) |
Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search pattern and enumeration options. |
GetFileSystemInfos(String, SearchOption) |
Retrieves an array of FileSystemInfo objects that represent the files and subdirectories matching the specified search criteria. |
GetFileSystemInfos()
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
Returns an array of strongly typed FileSystemInfo entries representing all the files and subdirectories in a directory.
public:
cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos();
public System.IO.FileSystemInfo[] GetFileSystemInfos ();
member this.GetFileSystemInfos : unit -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos () As FileSystemInfo()
Returns
An array of strongly typed FileSystemInfo entries.
Exceptions
The path is invalid (for example, it is on an unmapped drive).
Examples
The following example counts the files and directories under the specified directory.
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
Remarks
If there are no files or directories in the DirectoryInfo, this method returns an empty array. 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.
This method pre-populates the values of the following FileSystemInfo properties:
See also
- FileSystemInfo
- FileSystemWatcher
- File and Stream I/O
- How to: Read Text from a File
- How to: Write Text to a File
Applies to
GetFileSystemInfos(String)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search criteria.
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()
Parameters
- searchPattern
- 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, but it doesn't support regular expressions.
Returns
An array of strongly typed FileSystemInfo
objects matching the search criteria.
Exceptions
.NET Framework and .NET Core versions older than 2.1: searchPattern
contains one or more invalid characters defined by the GetInvalidPathChars() method.
searchPattern
is null
.
The specified path is invalid (for example, it is on an unmapped drive).
The caller does not have the required permission.
Examples
The following example counts the files and directories that match the specified search pattern.
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
Remarks
searchPattern
can be a combination of literal and wildcard characters, but it doesn't support regular expressions. The following wildcard specifiers are permitted in searchPattern
.
Wildcard specifier | Matches |
---|---|
* (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:
See also
- FileSystemInfo
- FileSystemWatcher
- File and Stream I/O
- How to: Read Text from a File
- How to: Write Text to a File
Applies to
GetFileSystemInfos(String, EnumerationOptions)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search pattern and enumeration options.
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()
Parameters
- searchPattern
- 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, but it doesn't support regular expressions.
- enumerationOptions
- EnumerationOptions
An object that describes the search and enumeration configuration to use.
Returns
An array of strongly typed FileSystemInfo
objects matching searchPattern
and enumerationOptions
.
Exceptions
.NET Framework and .NET Core versions older than 2.1: searchPattern
contains one or more invalid characters defined by the GetInvalidPathChars() method.
searchPattern
is null
.
The specified path is invalid (for example, it is on an unmapped drive).
The caller does not have the required permission.
Remarks
searchPattern
can be a combination of literal and wildcard characters, but it doesn't support regular expressions. The following wildcard specifiers are permitted in searchPattern
.
Wildcard specifier | Matches |
---|---|
* (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:
Applies to
GetFileSystemInfos(String, SearchOption)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
Retrieves an array of FileSystemInfo objects that represent the files and subdirectories matching the specified search criteria.
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()
Parameters
- searchPattern
- 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, but it doesn't support regular expressions.
- searchOption
- SearchOption
One of the enumeration values that specifies whether the search operation should include only the current directory or all subdirectories. The default value is TopDirectoryOnly.
Returns
An array of file system entries that match the search criteria.
Exceptions
.NET Framework and .NET Core versions older than 2.1: searchPattern
contains one or more invalid characters defined by the GetInvalidPathChars() method.
searchPattern
is null
.
searchOption
is not a valid SearchOption value.
The specified path is invalid (for example, it is on an unmapped drive).
The caller does not have the required permission.
Remarks
searchPattern
can be a combination of literal and wildcard characters, but it doesn't support regular expressions. The following wildcard specifiers are permitted in searchPattern
.
Wildcard specifier | Matches |
---|---|
* (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".
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.
This method pre-populates the values of the following FileSystemInfo properties: