Directory Class
Exposes static methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited.
Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)
The Directory type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | CreateDirectory(String) | Creates all directories and subdirectories in the specified path. |
![]() ![]() | CreateDirectory(String, DirectorySecurity) | Creates all the directories in the specified path, applying the specified Windows security. |
![]() ![]() ![]() | Delete(String) | Deletes an empty directory from a specified path. |
![]() ![]() ![]() | Delete(String, Boolean) | Deletes the specified directory and, if indicated, any subdirectories and files in the directory. |
![]() ![]() | EnumerateDirectories(String) | Returns an enumerable collection of directory names in a specified path. |
![]() ![]() | EnumerateDirectories(String, String) | Returns an enumerable collection of directory names that match a search pattern in a specified path. |
![]() ![]() | EnumerateDirectories(String, String, SearchOption) | Returns an enumerable collection of directory names that match a search pattern in a specified path, and optionally searches subdirectories. |
![]() ![]() | EnumerateFiles(String) | Returns an enumerable collection of file names in a specified path. |
![]() ![]() | EnumerateFiles(String, String) | Returns an enumerable collection of file names that match a search pattern in a specified path. |
![]() ![]() | EnumerateFiles(String, String, SearchOption) | Returns an enumerable collection of file names that match a search pattern in a specified path, and optionally searches subdirectories. |
![]() ![]() | EnumerateFileSystemEntries(String) | Returns an enumerable collection of file-system entries in a specified path. |
![]() ![]() | EnumerateFileSystemEntries(String, String) | Returns an enumerable collection of file-system entries that match a search pattern in a specified path. |
![]() ![]() | EnumerateFileSystemEntries(String, String, SearchOption) | Returns an enumerable collection of file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. |
![]() ![]() ![]() | Exists | Determines whether the given path refers to an existing directory on disk. |
![]() ![]() | GetAccessControl(String) | Gets a DirectorySecurity object that encapsulates the access control list (ACL) entries for a specified directory. |
![]() ![]() | GetAccessControl(String, AccessControlSections) | Gets a DirectorySecurity object that encapsulates the specified type of access control list (ACL) entries for a specified directory. |
![]() ![]() ![]() | GetCreationTime | Gets the creation date and time of a directory. |
![]() ![]() | GetCreationTimeUtc | Gets the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. |
![]() ![]() ![]() | GetCurrentDirectory | Gets the current working directory of the application. |
![]() ![]() ![]() | GetDirectories(String) | Gets the names of subdirectories (including their paths) in the specified directory. |
![]() ![]() ![]() | GetDirectories(String, String) | Gets the names of subdirectories (including their paths) that match the specified search pattern in the current directory. |
![]() ![]() | GetDirectories(String, String, SearchOption) | Gets the names of the subdirectories (including their paths) that match the specified search pattern in the current directory, and optionally searches subdirectories. |
![]() ![]() ![]() | GetDirectoryRoot | Returns the volume information, root information, or both for the specified path. |
![]() ![]() ![]() | GetFiles(String) | Returns the names of files (including their paths) in the specified directory. |
![]() ![]() ![]() | GetFiles(String, String) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory. |
![]() ![]() | GetFiles(String, String, SearchOption) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. |
![]() ![]() ![]() | GetFileSystemEntries(String) | Returns the names of all files and subdirectories in the specified directory. |
![]() ![]() ![]() | GetFileSystemEntries(String, String) | Returns an array of file system entries that match the specified search criteria. |
![]() ![]() | GetFileSystemEntries(String, String, SearchOption) | Gets an array of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. |
![]() ![]() ![]() | GetLastAccessTime | Returns the date and time the specified file or directory was last accessed. |
![]() ![]() | GetLastAccessTimeUtc | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. |
![]() ![]() ![]() | GetLastWriteTime | Returns the date and time the specified file or directory was last written to. |
![]() ![]() | GetLastWriteTimeUtc | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. |
![]() ![]() | GetLogicalDrives | Retrieves the names of the logical drives on this computer in the form "<drive letter>:\". |
![]() ![]() | GetParent | Retrieves the parent directory of the specified path, including both absolute and relative paths. |
![]() ![]() ![]() | Move | Moves a file or a directory and its contents to a new location. |
![]() ![]() | SetAccessControl | Applies access control list (ACL) entries described by a DirectorySecurity object to the specified directory. |
![]() ![]() | SetCreationTime | Sets the creation date and time for the specified file or directory. |
![]() ![]() | SetCreationTimeUtc | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. |
![]() ![]() ![]() | SetCurrentDirectory | Sets the application's current working directory to the specified directory. |
![]() ![]() | SetLastAccessTime | Sets the date and time the specified file or directory was last accessed. |
![]() ![]() | SetLastAccessTimeUtc | Sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. |
![]() ![]() | SetLastWriteTime | Sets the date and time a directory was last written to. |
![]() ![]() | SetLastWriteTimeUtc | Sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. |
Use the Directory class for typical operations such as copying, moving, renaming, creating, and deleting directories. You can also use the Directory class to get and set DateTime information related to the creation, access, and writing of a directory.
Because all Directory methods are static, it might be more efficient to use a Directory method rather than a corresponding DirectoryInfo instance method if you want to perform only one action. Most Directory methods require the path to the directory that you are manipulating.
The static methods of the Directory class perform security checks on all methods. If you are going to reuse an object several times, consider using the corresponding instance method of DirectoryInfo instead, because the security check will not always be necessary.
Note |
|---|
In members that accept a path as an input string, that path must be well-formed or an exception is raised; however, if a path is fully qualified but begins with a space, the space is not omitted but no exception is raised. Similarly, a path or a combination of paths cannot be fully qualified twice. For example, "c:\temp c:\windows" also raises an exception in most cases. Ensure that your paths are well-formed when using methods that accept a path string. |
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" 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.
By default, full read/write access to new directories is granted to all users. Demanding permission for a directory where the path string ends with the directory separator character results in demanding permissions for all the contained subdirectories (for example, "C:\Temp\"). If permissions are required only for a specific directory, the string should end with a period (for example, "C:\Temp\.").
For a list of common I/O tasks, see Common I/O Tasks.
The following example shows how to retrieve all the text files from a directory and move them to a new directory. After the files are moved, they no longer exist in the original directory.
using System; using System.IO; namespace ConsoleApplication { class Program { static void Main(string[] args) { string sourceDirectory = @"C:\current"; string archiveDirectory = @"C:\archive"; try { var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt"); foreach (string currentFile in txtFiles) { string fileName = currentFile.Substring(sourceDirectory.Length + 1); Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName)); } } catch (Exception e) { Console.WriteLine(e.Message); } } } }
The following example demonstrates how to use the EnumerateFiles method to retrieve a collection of text files from a directory, and then use that collection in a query to find all the lines that contain "Example".
using System; using System.IO; using System.Linq; namespace ConsoleApplication { class Program { static void Main(string[] args) { string archiveDirectory = @"C:\archive"; var files = from retrievedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories) from line in File.ReadLines(retrievedFile) where line.Contains("Example") select new { File = retrievedFile, Line = line }; foreach (var f in files) { Console.WriteLine("{0} contains {1}", f.File, f.Line); } Console.WriteLine("{0} lines found.", files.Count().ToString()); } } }
The following example demonstrates how to move a directory and all its files to a new directory. The original directory no longer exists after it has been moved.
using System; using System.IO; namespace ConsoleApplication { class Program { static void Main(string[] args) { string sourceDirectory = @"C:\source"; string destinationDirectory = @"C:\destination"; try { Directory.Move(sourceDirectory, destinationDirectory); } catch (Exception e) { Console.WriteLine(e.Message); } } } }
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.



Note