System.IO.DirectoryInfo 类
方法描述
公开用于创建、移动和枚举目录和子目录的实例方法。 此类不能被继承。
语法定义(C# System.IO.DirectoryInfo 类 的用法)
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class DirectoryInfo : FileSystemInfo
构造函数
构造函数名称 | 构造函数描述 |
---|---|
DirectoryInfo | 在指定的路径中初始化 DirectoryInfo 类的新实例。 |
成员/方法
方法名称 | 方法描述 |
---|---|
Create() | 创建目录。 |
Create(DirectorySecurity) | 使用 DirectorySecurity 对象创建目录。 |
CreateObjRef | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。) |
CreateSubdirectory(String) | 在指定路径中创建一个或多个子目录。 指定路径可以是相对于 DirectoryInfo 类的此实例的路径。 |
CreateSubdirectory(String, DirectorySecurity) | 使用指定的安全性在指定的路径上创建一个或多个子目录。 指定路径可以是相对于 DirectoryInfo 类的此实例的路径。 |
Delete() | 如果此 DirectoryInfo 为空,则删除它。 (重写 FileSystemInfo.Delete()。) |
Delete(Boolean) | 删除 DirectoryInfo 的此实例,指定是否删除子目录和文件。 |
EnumerateDirectories() | 返回当前目录中的目录信息的可枚举集合。 |
EnumerateDirectories(String) | 返回与指定的搜索模式匹配的目录信息的可枚举集合。 |
EnumerateDirectories(String, SearchOption) | 返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。 |
EnumerateFiles() | 返回当前目录中的文件信息的可枚举集合。 |
EnumerateFiles(String) | 返回与搜索模式匹配的文件信息的可枚举集合。 |
EnumerateFiles(String, SearchOption) | 返回与指定的搜索模式和搜索子目录选项匹配的文件信息的可枚举集合。 |
EnumerateFileSystemInfos() | 返回当前目录中的文件系统信息的可枚举集合。 |
EnumerateFileSystemInfos(String) | 返回与指定的搜索模式匹配的文件系统信息的可枚举集合。 |
EnumerateFileSystemInfos(String, SearchOption) | 返回与指定的搜索模式和搜索子目录选项匹配的文件系统信息的可枚举集合。 |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetAccessControl() | 获取 DirectorySecurity 对象,该对象封装当前 DirectoryInfo 对象所描述的目录的访问控制列表 (ACL) 项。 |
GetAccessControl(AccessControlSections) | 获取 DirectorySecurity 对象,该对象封装当前 DirectoryInfo 对象所描述的目录的指定类型的访问控制列表 (ACL) 项。 |
GetDirectories() | 返回当前目录的子目录。 |
GetDirectories(String) | 返回当前 DirectoryInfo 中、与给定搜索条件匹配的目录的数组。 |
GetDirectories(String, SearchOption) | 返回当前 DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。 |
GetFiles() | 返回当前目录的文件列表。 |
GetFiles(String) | 返回当前目录中与给定的搜索模式匹配的文件列表。 |
GetFiles(String, SearchOption) | 返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。 |
GetFileSystemInfos() | 返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。 |
GetFileSystemInfos(String) | 检索表示与指定的搜索条件匹配的文件和子目录的强类型 FileSystemInfo 对象的数组。 |
GetFileSystemInfos(String, SearchOption) | 检索表示与指定的搜索条件匹配的文件和子目录的 FileSystemInfo 对象的数组。 |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) |
GetLifetimeService | 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。) |
GetObjectData | 设置带有文件名和附加异常信息的 SerializationInfo 对象。 (继承自 FileSystemInfo。) |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
InitializeLifetimeService | 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。) |
MemberwiseClone() | 创建当前 Object 的浅表副本。 (继承自 Object。) |
MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。) |
MoveTo | 将 DirectoryInfo 实例及其内容移动到新路径。 |
Refresh | 刷新对象的状态。 (继承自 FileSystemInfo。) |
SetAccessControl | 将 DirectorySecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 DirectoryInfo 对象所描述的目录。 |
ToString | 返回用户所传递的原始路径。 (重写 Object.ToString()。) |
提示和注释
将 DirectoryInfo 类用于典型操作,如复制、移动、重命名、创建和删除目录。
如果打算多次重用某个对象,可考虑使用 DirectoryInfo 的实例方法,而不是 Directory 类的相应静态方法,因为并不总是需要安全检查。
注意
在接受路径作为输入字符串的成员中,路径必须是格式良好的,否则将引发异常。 例如,如果路径是完全限定的但以空格开头,则路径在类的方法中不会被修剪。 因此,路径的格式不正确,并将引发异常。 同样,路径或路径的组合不能被完全限定两次。 例如,“c:\temp c:\windows”在大多数情况下也将引发异常。 在使用接受路径字符串的方法时,请确保路径是格式良好的。
在接受路径的成员中,路径可以是指文件或仅是目录。 指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。 例如,以下都是可接受的路径:
C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。
C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。
C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。
C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。
默认情况下,向所有用户授予对新目录的完全读/写访问权限。
有关通用 I/O 任务的列表,请参见通用 I/O 任务。
System.IO.DirectoryInfo 类例子
下面的示例演示如何复制目录及其内容。
using System; using System.IO; class CopyDir { public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { if (source.FullName.ToLower() == target.FullName.ToLower()) { return; } // Check if the target directory exists, if not, create it. if (Directory.Exists(target.FullName) == false) { Directory.CreateDirectory(target.FullName); } // Copy each file into it's new directory. foreach (FileInfo fi in source.GetFiles()) { Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name); fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); } // Copy each subdirectory using recursion. foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) { DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name); CopyAll(diSourceSubDir, nextTargetSubDir); } } public static void Main() { string sourceDirectory = @"c:\sourceDirectory"; string targetDirectory = @"c:\targetDirectory"; DirectoryInfo diSource = new DirectoryInfo(sourceDirectory); DirectoryInfo diTarget = new DirectoryInfo(targetDirectory); CopyAll(diSource, diTarget); } // Output will vary based on the contents of the source directory. }
线程安全
此类型的任何公共 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 系统要求。