Directory Class
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.
Exposes static methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited.
public ref class Directory abstract sealed
public ref class Directory sealed
public static class Directory
public sealed class Directory
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
type Directory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Directory = class
Public Class Directory
Public NotInheritable Class Directory
- Inheritance
-
Directory
- Attributes
Examples
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);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
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());
}
}
}
open System.IO
let archiveDirectory = @"C:\archive"
let files =
query {
for retrivedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines retrivedFile do
where (line.Contains "file")
select
{| File = retrivedFile
Line = line |}
}
for f in files do
printfn $"{f.File} contains {f.Line}"
printfn "{Seq.length files} lines found."
Imports System.IO
Module Module1
Sub Main()
Dim archiveDirectory As String = "C:\archive"
Dim files = From retrievedFile In Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(retrievedFile)
Where line.Contains("Example")
Select New With {.curFile = retrievedFile, .curLine = line}
For Each f In files
Console.WriteLine("{0} contains {1}", f.curFile, f.curLine)
Next
Console.WriteLine("{0} lines found.", files.Count.ToString())
End Sub
End Module
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);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"
try
Directory.Move(sourceDirectory, destinationDirectory)
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\source"
Dim destinationDirectory As String = "C:\destination"
Try
Directory.Move(sourceDirectory, destinationDirectory)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Remarks
Use the Directory class for typical operations such as copying, moving, renaming, creating, and deleting directories.
To create a directory, use one of the CreateDirectory methods.
To delete a directory, use one of the Delete methods.
To get or set the current directory for an app, use the GetCurrentDirectory or SetCurrentDirectory method.
To manipulate DateTime information related to the creation, access, and writing of a directory, use methods such as SetLastAccessTime and SetCreationTime.
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.
If you are performing only one directory-related action, it might be more efficient to use a static Directory method rather than a corresponding DirectoryInfo instance method. Most Directory methods require the path to the directory that you are manipulating.
Note
In members that accept a string path
parameter, that path must be well-formed or an exception is raised. For example, if a path is fully qualified but begins with a space (" c:\temp"), the path string isn't trimmed, so the path is considered malformed and an exception is raised. In addition, a path or a combination of paths cannot be fully qualified twice. For example, "c:\temp c:\windows" also raises an exception. Ensure that your paths are well-formed when using methods that accept a path string. For more information see Path.
In members that accept a path, the path can refer to a file or a directory. You can use a full path, 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. However, the app must have the correct security to access existing directories.
To demand permissions for a directory and all its subdirectories, end the path string with the directory separator character. (For example, "C:\Temp\" grants access to C:\Temp\ and all its subdirectories.) To demand permissions only for a specific directory, end the path string with a period. (For example, "C:\Temp\." grants access only to C:\Temp\, not to its subdirectories.)
In members that accept a searchPattern
parameter, the search string can be any combination of literal characters and two wildcard characters; * and ?. This parameter does not recognize regular expressions. For more information, see the EnumerateDirectories(String, String) method or any other method that uses the searchPattern
parameter.
For a list of common I/O tasks, see Common I/O Tasks.
Directory and DirectoryInfo are not supported for use in Windows Store apps. For information about how to access files and folders in Windows Store apps, see Accessing data and files (Windows Store apps).
Methods
CreateDirectory(String) |
Creates all directories and subdirectories in the specified path unless they already exist. |
CreateDirectory(String, DirectorySecurity) |
Creates all the directories in the specified path, unless they already exist, applying the specified Windows security. |
CreateDirectory(String, UnixFileMode) |
Creates all directories and subdirectories in the specified path with the specified permissions unless they already exist. |
CreateSymbolicLink(String, String) |
Creates a directory symbolic link identified by |
CreateTempSubdirectory(String) |
Creates a uniquely named, empty directory in the current user's temporary directory. |
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 full names in a specified path. |
EnumerateDirectories(String, String) |
Returns an enumerable collection of directory full names that match a search pattern in a specified path. |
EnumerateDirectories(String, String, EnumerationOptions) |
Returns an enumerable collection of the directory full names that match a search pattern in a specified path, and optionally searches subdirectories. |
EnumerateDirectories(String, String, SearchOption) |
Returns an enumerable collection of directory full names that match a search pattern in a specified path, and optionally searches subdirectories. |
EnumerateFiles(String) |
Returns an enumerable collection of full file names in a specified path. |
EnumerateFiles(String, String) |
Returns an enumerable collection of full file names that match a search pattern in a specified path. |
EnumerateFiles(String, String, EnumerationOptions) |
Returns an enumerable collection of full file names that match a search pattern and enumeration options in a specified path, and optionally searches subdirectories. |
EnumerateFiles(String, String, SearchOption) |
Returns an enumerable collection of full file names that match a search pattern in a specified path, and optionally searches subdirectories. |
EnumerateFileSystemEntries(String) |
Returns an enumerable collection of file names and directory names in a specified path. |
EnumerateFileSystemEntries(String, String) |
Returns an enumerable collection of file names and directory names that match a search pattern in a specified path. |
EnumerateFileSystemEntries(String, String, EnumerationOptions) |
Returns an enumerable collection of file names and directory names that match a search pattern and enumeration options 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(String) |
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(String) |
Gets the creation date and time of a directory. |
GetCreationTimeUtc(String) |
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) |
Returns the names of subdirectories (including their paths) in the specified directory. |
GetDirectories(String, String) |
Returns the names of subdirectories (including their paths) that match the specified search pattern in the specified directory. |
GetDirectories(String, String, EnumerationOptions) |
Returns the names of subdirectories (including their paths) that match the specified search pattern and enumeration options in the specified directory. |
GetDirectories(String, String, SearchOption) |
Returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. |
GetDirectoryRoot(String) |
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, EnumerationOptions) |
Returns the names of files (including their paths) that match the specified search pattern and enumeration options 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 a specified path. |
GetFileSystemEntries(String, String) |
Returns an array of file names and directory names that match a search pattern in a specified path. |
GetFileSystemEntries(String, String, EnumerationOptions) |
Returns an array of file names and directory names that match a search pattern and enumeration options in a specified path. |
GetFileSystemEntries(String, String, SearchOption) |
Returns an array of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. |
GetLastAccessTime(String) |
Returns the date and time the specified file or directory was last accessed. |
GetLastAccessTimeUtc(String) |
Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. |
GetLastWriteTime(String) |
Returns the date and time the specified file or directory was last written to. |
GetLastWriteTimeUtc(String) |
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(String) |
Retrieves the parent directory of the specified path, including both absolute and relative paths. |
Move(String, String) |
Moves a file or a directory and its contents to a new location. |
ResolveLinkTarget(String, Boolean) |
Gets the target of the specified directory link. |
SetAccessControl(String, DirectorySecurity) |
Applies access control list (ACL) entries described by a DirectorySecurity object to the specified directory. |
SetCreationTime(String, DateTime) |
Sets the creation date and time for the specified file or directory. |
SetCreationTimeUtc(String, DateTime) |
Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. |
SetCurrentDirectory(String) |
Sets the application's current working directory to the specified directory. |
SetLastAccessTime(String, DateTime) |
Sets the date and time the specified file or directory was last accessed. |
SetLastAccessTimeUtc(String, DateTime) |
Sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. |
SetLastWriteTime(String, DateTime) |
Sets the date and time a directory was last written to. |
SetLastWriteTimeUtc(String, DateTime) |
Sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. |