System.IO.Directory 类

方法描述

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

语法定义(C# System.IO.Directory 类 的用法)

[ComVisibleAttribute(true)]
public static class Directory

构造函数

构造函数名称 构造函数描述

成员/方法

方法名称 方法描述
CreateDirectory(String) 在指定路径创建所有目录和子目录。
CreateDirectory(String, DirectorySecurity) 创建指定路径中的所有目录,并应用指定的 Windows 安全性。
Delete(String) 从指定路径删除空目录。
Delete(String, Boolean) 删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。
EnumerateDirectories(String) 返回指定路径中的目录名称的可枚举集合。
EnumerateDirectories(String, String) 返回指定路径中与搜索模式匹配的目录名称的可枚举集合。
EnumerateDirectories(String, String, SearchOption) 返回指定路径中与搜索模式匹配的目录名称的可枚举集合,还可以搜索子目录。
EnumerateFiles(String) 返回指定路径中的文件名的可枚举集合。
EnumerateFiles(String, String) 返回指定路径中与搜索模式匹配的文件名称的可枚举集合。
EnumerateFiles(String, String, SearchOption) 返回指定路径中与搜索模式匹配的文件名称的可枚举集合,还可以搜索子目录。
EnumerateFileSystemEntries(String) 返回指定路径中的文件系统项的可枚举集合。
EnumerateFileSystemEntries(String, String) 返回指定路径中与搜索模式匹配的文件系统项的可枚举集合。
EnumerateFileSystemEntries(String, String, SearchOption) 返回指定路径中与搜索模式匹配的文件名称和目录名称的可枚举集合,还可以搜索子目录。
Exists 确定给定路径是否引用磁盘上的现有目录。
GetAccessControl(String) 获取一个 DirectorySecurity 对象,该对象封装指定目录的访问控制列表 (ACL) 项。
GetAccessControl(String, AccessControlSections) 获取一个 DirectorySecurity 对象,它封装指定目录的指定类型的访问控制列表 (ACL) 项。
GetCreationTime 获取目录的创建日期和时间。
GetCreationTimeUtc 获取目录创建的日期和时间,其格式为协调世界时 (UTC)。
GetCurrentDirectory 获取应用程序的当前工作目录。
GetDirectories(String) 获取指定目录中的子目录的名称(包括其路径)。
GetDirectories(String, String) 在当前目录获取与指定搜索模式匹配的目录的数组(包括它们的路径)。
GetDirectories(String, String, SearchOption) 获取与在当前目录中的指定搜索模式相匹配的目录(包括其路径)的名称,并且可以搜索子目录。
GetDirectoryRoot 返回指定路径的卷信息、根信息或两者同时返回。
GetFiles(String) 返回指定目录中文件的名称(包括其路径)。
GetFiles(String, String) 返回指定目录中与指定的搜索模式匹配的文件的名称(包含它们的路径)。
GetFiles(String, String, SearchOption) 返回指定目录中与指定的搜索模式匹配的文件的名称(包含它们的路径),并使用一个值以确定是否搜索子目录。
GetFileSystemEntries(String) 返回指定目录中所有文件和子目录的名称。
GetFileSystemEntries(String, String) 返回与指定搜索条件匹配的文件系统项的数组。
GetFileSystemEntries(String, String, SearchOption) 获取指定路径中与搜索模式匹配的所有文件名称和目录名称的数组,还可以搜索子目录。
GetLastAccessTime 返回上次访问指定文件或目录的日期和时间。
GetLastAccessTimeUtc 返回上次访问指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
GetLastWriteTime 返回上次写入指定文件或目录的日期和时间。
GetLastWriteTimeUtc 返回上次写入指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
GetLogicalDrives 检索此计算机上格式为“<盘符>:\”的逻辑驱动器的名称。
GetParent 检索指定路径的父目录,包括绝对路径和相对路径。
Move 将文件或目录及其内容移到新位置。
SetAccessControl 将 DirectorySecurity 对象描述的访问控制列表 (ACL) 项应用于指定的目录。
SetCreationTime 为指定的文件或目录设置创建日期和时间。
SetCreationTimeUtc 设置指定文件或目录的创建日期和时间,其格式为协调世界时 (UTC)。
SetCurrentDirectory 将应用程序的当前工作目录设置为指定的目录。
SetLastAccessTime 设置上次访问指定文件或目录的日期和时间。
SetLastAccessTimeUtc 设置上次访问指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
SetLastWriteTime 设置上次写入目录的日期和时间。
SetLastWriteTimeUtc 设置上次写入某个目录的日期和时间,其格式为协调世界时 (UTC)。

提示和注释

将 Directory 类用于典型操作,如复制、移动、重命名、创建和删除目录。 也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。

由于所有的 Directory 方法都是静态的,所以如果只想执行一个操作,那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。 大多数 Directory 方法要求当前操作的目录的路径。

Directory 类的静态方法对所有方法都执行安全检查。 如果打算多次重用某个对象,可考虑改用 DirectoryInfo 的相应实例方法,因为并不总是需要安全检查。

注意

在接受路径作为输入字符串的成员中,路径必须是格式良好的,否则将会引发异常。然而,如果路径是完全限定的,但是以空格开头,则空格不会被省略,并且不会引发异常。 同样,路径或路径的组合不能被完全限定两次。 例如,“c:\temp c:\windows”在大多数情况下也将引发异常。 在使用接受路径字符串的方法时,请确保路径是格式良好的。

在接受路径的成员中,路径可以是指文件或仅是目录。 指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (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\.”)。

有关通用 I/O 任务的列表,请参见通用 I/O 任务。

System.IO.Directory 类例子

下面的代码示例演示如何计算目录的大小。

// The following example calculates the size of a directory
// and its subdirectories, if any, and displays the total size
// in bytes.

using System;
using System.IO;

public class ShowDirSize 
{
    public static long DirSize(DirectoryInfo d) 
    {    
        long Size = 0;    
        // Add file sizes.
        FileInfo[] fis = d.GetFiles();
        foreach (FileInfo fi in fis) 
        {      
            Size += fi.Length;    
        }
        // Add subdirectory sizes.
        DirectoryInfo[] dis = d.GetDirectories();
        foreach (DirectoryInfo di in dis) 
        {
            Size += DirSize(di);   
        }
        return(Size);  
    }
    public static void Main(string[] args) 
    {
        if (args.Length != 1) 
        {
            Console.WriteLine("You must provide a directory argument at the command line.");    
        } 
        else 
        {  
            DirectoryInfo d = new DirectoryInfo(args[0]);
            long dsize = DirSize(d);
            Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, dsize);
        }
    }
}

继承层次结构

System.Object

System.IO.Directory

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。