Directory 类

定义

公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 此类不能被继承。

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
继承
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

以下示例演示如何使用 EnumerateFiles 方法从目录中检索文本文件集合,然后在查询中使用该集合查找包含“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

以下示例演示如何将目录及其所有文件移动到新目录。 原始目录在移动后不再存在。

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

注解

Directory将 类用于复制、移动、重命名、创建和删除目录等典型操作。

类的 Directory 静态方法对所有方法执行安全检查。 如果要多次重用对象,请考虑改用 对应的实例方法DirectoryInfo,因为安全检查并非始终是必需的。

如果只执行一个与目录相关的操作,则使用静态 Directory 方法而不是相应的 DirectoryInfo 实例方法可能更有效。 大多数 Directory 方法都需要要操作的目录的路径。

注意

在接受字符串 path 参数的成员中,该路径的格式必须正常,否则将引发异常。 例如,如果路径完全限定,但以空格 (“c:\temp”) 开头,则不会剪裁路径字符串,因此该路径被视为格式不正确,并引发异常。 此外,路径或路径组合不能完全限定两次。 例如,“c:\temp c:\windows”也会引发异常。 使用接受路径字符串的方法时,请确保路径格式良好。 有关更多信息,请参见Path

在接受路径的成员中,路径可以引用文件或目录。 可以将完整路径、相对路径或通用命名约定 (UNC) 路径用于服务器和共享名称。 例如,以下所有路径都是可接受的路径:

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

默认情况下,向所有用户授予对新目录的完全读/写访问权限。 但是,应用必须具有正确的安全性才能访问现有目录。

若要要求对目录及其所有子目录具有权限,请使用目录分隔符结束路径字符串。 (例如,“C:\Temp\”授予对 C:\Temp\ 及其所有子目录的访问权限。) 若要仅请求特定目录的权限,请使用句点结束路径字符串。 (例如,“C:\Temp\.”仅授予对 C:\Temp\ 的访问权限,而不向其子目录授予访问权限。)

在接受参数的成员中,搜索字符串可以是文本字符和两个 searchPattern 通配符的任意组合:* 和 ?。 此参数不识别正则表达式。 有关详细信息,请参阅 EnumerateDirectories(String, String) 方法或使用 参数的任何其他方法 searchPattern

有关常见 I/O 任务的列表,请参阅 常见 I/O 任务

DirectoryDirectoryInfo 不支持在 Windows 应用商店应用中使用。 有关如何访问 Windows 应用商店应用中的文件和文件夹的信息,请参阅 访问 windows 应用商店应用 (数据和文件)

方法

CreateDirectory(String)

在指定路径中创建所有目录和子目录,除非它们已经存在。

CreateDirectory(String, DirectorySecurity)

在指定路径中创建所有目录(除非已存在),并应用指定的 Windows 安全性。

CreateDirectory(String, UnixFileMode)

在具有指定权限的指定路径中创建所有目录和子目录,除非它们已经存在。

CreateSymbolicLink(String, String)

创建由 pathpathToTarget标识的指向 的目录符号链接。

CreateTempSubdirectory(String)

在当前用户的临时目录中创建一个唯一名称的空目录。

Delete(String)

从指定路径删除空目录。

Delete(String, Boolean)

删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。

EnumerateDirectories(String)

返回指定路径中的目录完整名称的可枚举集合。

EnumerateDirectories(String, String)

返回指定路径中与搜索模式匹配的目录完整名称的可枚举集合。

EnumerateDirectories(String, String, EnumerationOptions)

返回指定路径中与搜索模式匹配的目录完整名称的可枚举集合,还可搜索子目录。

EnumerateDirectories(String, String, SearchOption)

返回指定路径中与搜索模式匹配的目录完整名称的可枚举集合,还可搜索子目录。

EnumerateFiles(String)

返回指定路径中的完整文件名的可枚举集合。

EnumerateFiles(String, String)

返回指定路径中与搜索模式匹配的完整文件名的可枚举集合。

EnumerateFiles(String, String, EnumerationOptions)

返回指定路径中与搜索模式和枚举选项匹配的完整文件名的可枚举集合,还可以搜索子目录。

EnumerateFiles(String, String, SearchOption)

返回指定路径中与搜索模式匹配的完整文件名的可枚举集合,还可以搜索子目录。

EnumerateFileSystemEntries(String)

返回指定路径中的文件名和目录名的可枚举集合。

EnumerateFileSystemEntries(String, String)

返回指定路径中与搜索模式匹配的文件名和目录名的可枚举集合。

EnumerateFileSystemEntries(String, String, EnumerationOptions)

返回指定路径中与搜索模式和枚举选项匹配的文件名和目录名的可枚举集合。

EnumerateFileSystemEntries(String, String, SearchOption)

返回指定路径中与搜索模式匹配的文件名称和目录名的可枚举集合,还可以搜索子目录。

Exists(String)

确定给定路径是否引用磁盘上的现有目录。

GetAccessControl(String)

获取 DirectorySecurity 对象,该对象封装指定目录的访问控制列表 (ACL) 项。

GetAccessControl(String, AccessControlSections)

获取一个 DirectorySecurity 对象,它封装指定目录的指定类型的访问控制列表 (ACL) 条目。

GetCreationTime(String)

获取目录的创建日期和时间。

GetCreationTimeUtc(String)

获取目录创建的日期和时间,其格式为协调通用时 (UTC)。

GetCurrentDirectory()

获取应用程序的当前工作目录。

GetDirectories(String)

返回指定目录中的子目录的名称(包括其路径)。

GetDirectories(String, String)

返回指定目录中与指定的搜索模式匹配的子目录的名称(包括其路径)。

GetDirectories(String, String, EnumerationOptions)

返回指定目录中与指定的搜索模式和枚举选项匹配的子目录的名称(包括其路径)。

GetDirectories(String, String, SearchOption)

返回与在指定目录中的指定搜索模式匹配的子目录的名称(包括其路径),还可以选择地搜索子目录。

GetDirectoryRoot(String)

返回指定路径的卷信息、根信息或两者同时返回。

GetFiles(String)

返回指定目录中文件的名称(包括其路径)。

GetFiles(String, String)

返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。

GetFiles(String, String, EnumerationOptions)

返回指定目录中与指定的搜索模式和枚举选项匹配的文件的名称(包括其路径)。

GetFiles(String, String, SearchOption)

返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径),使用某个值确定是否要搜索子目录。

GetFileSystemEntries(String)

返回指定路径中的所有文件和子目录的名称。

GetFileSystemEntries(String, String)

返回一个数组,其中包含与指定路径中的搜索模式相匹配的文件名和目录名称。

GetFileSystemEntries(String, String, EnumerationOptions)

返回指定路径中与搜索模式和枚举选项匹配的文件名和目录名的数组。

GetFileSystemEntries(String, String, SearchOption)

返回指定路径中与搜索模式匹配的所有文件名和目录名的数组,还可以搜索子目录。

GetLastAccessTime(String)

返回上次访问指定文件或目录的日期和时间。

GetLastAccessTimeUtc(String)

返回上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。

GetLastWriteTime(String)

返回上次写入指定文件或目录的日期和时间。

GetLastWriteTimeUtc(String)

返回上次写入指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。

GetLogicalDrives()

检索此计算机上的逻辑驱动器的名称,格式为“<驱动器号>:\”。

GetParent(String)

检索指定路径的父目录,包括绝对路径和相对路径。

Move(String, String)

将文件或目录及其内容移到新位置。

ResolveLinkTarget(String, Boolean)

获取指定目录链接的目标。

SetAccessControl(String, DirectorySecurity)

DirectorySecurity 对象描述的访问控制列表 (ACL) 项应用于指定的目录。

SetCreationTime(String, DateTime)

为指定的文件或目录设置创建日期和时间。

SetCreationTimeUtc(String, DateTime)

设置指定文件或目录的创建日期和时间,其格式为协调通用时 (UTC)。

SetCurrentDirectory(String)

将应用程序的当前工作目录设置为指定的目录。

SetLastAccessTime(String, DateTime)

设置上次访问指定文件或目录的日期和时间。

SetLastAccessTimeUtc(String, DateTime)

设置上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。

SetLastWriteTime(String, DateTime)

设置上次写入目录的日期和时间。

SetLastWriteTimeUtc(String, DateTime)

设置上次写入某个目录的日期和时间,其格式为协调通用时 (UTC)。

适用于

另请参阅