2 out of 3 rated this helpful - Rate this topic

DirectoryInfo.EnumerateFiles Method

Returns an enumerable collection of file information in the current directory.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
public IEnumerable<FileInfo> EnumerateFiles()

Return Value

Type: System.Collections.Generic.IEnumerable<FileInfo>
An enumerable collection of the files in the current directory.
ExceptionCondition
DirectoryNotFoundException

The path encapsulated in the FileInfo object is invalid (for example, it is on an unmapped drive).

SecurityException

The caller does not have the required permission.

The EnumerateFiles and GetFiles methods differ as follows:

  • When you use EnumerateFiles, you can start enumerating the collection of FileInfo objects before the whole collection is returned.

  • When you use GetFiles, you must wait for the whole array of FileInfo objects to be returned before you can access the array.

Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

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

The returned collection is not cached; each call to the GetEnumerator method on the collection will start a new enumeration.

The following example enumerates the files under a specified directory and uses a LINQ query to return the names of all files that were created before 2009 by checking the value of the CreationTimeUtc property.

If you only need the names of the files, use the static Directory class for better performance. For an example, see the Directory.EnumerateFiles(String) method.

// Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library\");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009. 
var files = from f in DirInfo.EnumerateFiles()
		   where f.CreationTimeUtc < StartOf2009
		   select f;

// Show results. 
foreach (var f in files)
{
	Console.WriteLine("{0}", f.Name);
}

The following example shows how to enumerate files in a directory by using different search options. The example assumes a directory that has files named log1.txt, log2.txt, test1.txt, test2.txt, test3.txt, and a subdirectory that has a file named SubFile.txt.

Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.EnumerateFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.EnumerateFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.EnumerateFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next 
    End Sub 

End Module 

' This code produces output similar to the following: 

' No search pattern returns: 
' log1.txt 
' log2.txt 
' test1.txt 
' test2.txt 
' test3.txt 

' Search pattern *2* returns: 
' log2.txt 
' test2.txt 

' Search pattern test?.txt returns: 
' test1.txt 
' test2.txt 
' test3.txt 

' Search pattern AllDirectories returns: 
' log1.txt 
' log2.txt 
' test1.txt 
' test2.txt 
' test3.txt 
' SubFile.txt 
' Press any key to continue . . .

.NET Framework

Supported in: 4.5, 4

.NET Framework Client Profile

Supported in: 4

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.

Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.