Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

FileSystemInfo Class

Provides the base class for both FileInfo and DirectoryInfo objects.

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

[FileIOPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)]
public abstract class FileSystemInfo : MarshalByRefObject, 

The FileSystemInfo class contains methods that are common to file and directory manipulation. A FileSystemInfo object can represent either a file or a directory, thus serving as the basis for FileInfo or DirectoryInfo objects. Use this base class when parsing a lot of files and directories.

When first called, FileSystemInfo calls Refresh and returns the cached information on APIs to get attributes and so on. On subsequent calls, you must call Refresh to get the latest copy of the information.

A derived class can inherit from FileSystemInfo only if the derived class has the AllAccess permission from the FileIOPermissionAccess enumeration.

In members that accept a path, the path can refer to a file or just a directory. The specified path can also refer to a relative path or a Universal Naming Convention (UNC) path for a server and share name. For example, all the following are acceptable paths:

  • "c:\\MyDir\\MyFile.txt" in C#, or "c:\MyDir\MyFile.txt" in Visual Basic.

  • "c:\\MyDir" in C#, or "c:\MyDir" in Visual Basic.

  • "MyDir\\MySubdir" in C#, or "MyDir\MySubDir" in Visual Basic.

  • "\\\\MyServer\\MyShare" in C#, or "\\MyServer\MyShare" in Visual Basic.

For a list of common I/O tasks, see Common I/O Tasks.

The following example shows how to loop through all the files and directories, querying some information about each entry.

using System;
using System.IO;

namespace ConsoleApplication2
    class Program
        static void Main(string[] args)

            //  Loop through all the immediate subdirectories of C. 
            foreach (string entry in Directory.GetDirectories(@"C:\"))
                DisplayFileSystemInfoAttributes(new DirectoryInfo(entry));
            //  Loop through all the files in C. 
            foreach (string entry in Directory.GetFiles(@"C:\"))
                DisplayFileSystemInfoAttributes(new FileInfo(entry));

        static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
            //  Assume that this entry is a file.
            string entryType = "File";

            // Determine if entry is really a directory 
            if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
                entryType = "Directory";
            //  Show this entry's type, name, and creation date.
            Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);

 // Output will vary based on contents of drive C. 

 // Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003 
 // Directory entry C:\Inetpub was created on Monday, January 12, 2004 
 // Directory entry C:\Program Files was created on Tuesday, November 25, 2003 
 // Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003 
 // Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003 
 // Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003 
 // File entry C:\IO.SYS was created on Tuesday, November 25, 2003 
 // File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003 
 // File entry C:\pagefile.sys was created on Saturday, December 27, 2003

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

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

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0

Community Additions

© 2018 Microsoft