目录
一.SearchOption
AllDirectories 1
在搜索操作中包括当前目录和所有它的子目录。 此选项在搜索中包括重解析点,比如安装的驱动器和符号链接。
TopDirectoryOnly 0
仅在搜索操作中包括当前目录。
二.特点
Directory 静态类 用于典型的操作,例如复制、移动、重命名、创建和删除目录。
Directory类的静态方法对所有方法执行安全检查,基本每次使用都需要传入目录路径
Directory可以对多个不同路径的对象使用
DirectoryInfo的构造函数需要传入路径,因此DirectoryInfo只能对单个对象(可重复的)使用,不需要总是安全检查
三.方法:
方法注释来自于Directory和DirectoryInfo
1.Directory
在指定路径中创建所有目录和子目录,除非它们已经存在。
public static DirectoryInfo CreateDirectory(string path);
在指定路径中创建所有目录(除非已存在),并应用指定的 Windows 安全性。
public static DirectoryInfo CreateDirectory(string path, DirectorySecurity directorySecurity);
删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。
public static void Delete(string path, bool recursive);
从指定路径删除空目录。
public static void Delete(string path);
返回指定路径中的目录名的可枚举集合。
public static IEnumerable<string> EnumerateDirectories(string path);
返回指定路径中与搜索模式匹配的目录名的可枚举集合。//获取当前目录下的子目录
public static IEnumerable<string> EnumerateDirectories(string path, string searchPattern);
返回指定路径中与搜索模式匹配的目录名称的可枚举集合,还可以搜索子目录。
public static IEnumerable<string> EnumerateDirectories(string path, string searchPattern, SearchOption searchOption);
返回指定路径中的文件名的可枚举集合。//获取当前目录下的所有文件
public static IEnumerable<string> EnumerateFiles(string path);
返回指定路径中与搜索模式匹配的文件名称的可枚举集合。
public static IEnumerable<string> EnumerateFiles(string path, string searchPattern);
返回指定路径中与搜索模式匹配的文件名称的可枚举集合,还可以搜索子目录。
public static IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOption);
返回指定路径中的文件名和目录名的可枚举集合。//获取当前目录下的所有目录与文件
public static IEnumerable<string> EnumerateFileSystemEntries(string path);
返回指定路径中与搜索模式匹配的文件名称和目录名的可枚举集合,还可以搜索子目录。
public static IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, SearchOption searchOption);
返回指定路径中与搜索模式匹配的文件名和目录名的可枚举集合。
public static IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern);
确定给定路径是否引用磁盘上的现有目录。
public static bool Exists(string path);
获取 System.Security.AccessControl.DirectorySecurity 对象,该对象封装指定目录的访问控制列表 (ACL)项。
public static DirectorySecurity GetAccessControl(string path);
获取一个 System.Security.AccessControl.DirectorySecurity 对象,它封装指定目录的指定类型的访问控制列表 (ACL)条目。
public static DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections);
获取目录的创建日期和时间。
public static DateTime GetCreationTime(string path);
获取目录创建的日期和时间,其格式为协调通用时 (UTC)。
public static DateTime GetCreationTimeUtc(string path);
获取应用程序的当前工作目录。
public static string GetCurrentDirectory();
返回与在指定目录中的指定搜索模式匹配的子目录的名称(包括其路径),还可以选择地搜索子目录。
public static string[] GetDirectories(string path, string searchPattern, SearchOption searchOption);
返回指定目录中与指定的搜索模式匹配的子目录的名称(包括其路径)。
public static string[] GetDirectories(string path, string searchPattern);
返回指定目录中的子目录的名称(包括其路径)。
public static string[] GetDirectories(string path);
返回指定路径的卷信息、根信息或两者同时返回。
public static string GetDirectoryRoot(string path);
返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径),使用某个值确定是否要搜索子目录。
public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
返回指定目录中文件的名称(包括其路径)。
public static string[] GetFiles(string path);
返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。
public static string[] GetFiles(string path, string searchPattern);
返回指定路径中的所有文件和子目录的名称。
public static string[] GetFileSystemEntries(string path);
返回与指定路径中搜索模式匹配的文件名和目录名的数组。
public static string[] GetFileSystemEntries(string path, string searchPattern);
返回指定路径中与搜索模式匹配的所有文件名和目录名的数组,还可以搜索子目录。
public static string[] GetFileSystemEntries(string path, string searchPattern, SearchOption searchOption);
返回上次访问指定文件或目录的日期和时间。
public static DateTime GetLastAccessTime(string path);
返回上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。
public static DateTime GetLastAccessTimeUtc(string path);
返回上次写入指定文件或目录的日期和时间。
public static DateTime GetLastWriteTime(string path);
返回上次写入指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。
public static DateTime GetLastWriteTimeUtc(string path);
检索此计算机上格式为 "<drive letter>:\" 的逻辑驱动器的名称。
public static string[] GetLogicalDrives();
检索指定路径的父目录,包括绝对路径和相对路径。
public static DirectoryInfo GetParent(string path);
将文件或目录及其内容移到新位置。
public static void Move(string sourceDirName, string destDirName);
将 System.Security.AccessControl.DirectorySecurity 对象描述的访问控制列表 (ACL) 项应用于指定的目录。
public static void SetAccessControl(string path, DirectorySecurity directorySecurity);
为指定的文件或目录设置创建日期和时间。
public static void SetCreationTime(string path, DateTime creationTime);
设置指定文件或目录的创建日期和时间,其格式为协调通用时 (UTC)。
public static void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
将应用程序的当前工作目录设置为指定的目录。
public static void SetCurrentDirectory(string path);
设置上次访问指定文件或目录的日期和时间。
public static void SetLastAccessTime(string path, DateTime lastAccessTime);
设置上次访问指定文件或目录的日期和时间,其格式为协调通用时 (UTC)。
public static void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
设置上次写入目录的日期和时间。
public static void SetLastWriteTime(string path, DateTime lastWriteTime);
设置上次写入某个目录的日期和时间,其格式为协调通用时 (UTC)。
public static void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);
2.DirectoryInfo
属性
初始化指定路径上的 System.IO.DirectoryInfo 类的新实例。
public DirectoryInfo(string path);
获取指定的子目录的父目录。
public DirectoryInfo Parent { get; }
获取目录的完整路径。
public override string FullName { get; }
目录名称。
public override string Name { get; }
获取指示目录是否存在的值。
public override bool Exists { get; }
获取目录的根部分。
public DirectoryInfo Root { get; }
string path = @"G:\111\11\1";
DirectoryInfo directoryInfo;
public void CreateDirectory() {
directoryInfo = new DirectoryInfo(path);
Console.WriteLine("当前文件夹名字:" + directoryInfo.Name);
Console.WriteLine("当前文件夹全名:" + directoryInfo.FullName);
Console.WriteLine("当前文件夹父目录名字:" + directoryInfo.Parent.Name);
Console.WriteLine("当前文件夹根目录名字:" + directoryInfo.Root.Name);
}
打印:
方法:
创建目录。
public void Create();
使用 System.Security.AccessControl.DirectorySecurity 对象创建目录。
public void Create(DirectorySecurity directorySecurity);
在指定路径上创建一个或多个子目录。 指定路径可以是相对于 System.IO.DirectoryInfo 类的此实例的路径。
public DirectoryInfo CreateSubdirectory(string path);
使用指定的安全性在指定的路径上创建一个或多个子目录。 指定路径可以是相对于 System.IO.DirectoryInfo 类的此实例的路径。
public DirectoryInfo CreateSubdirectory(string path, DirectorySecurity directorySecurity);
删除 System.IO.DirectoryInfo 的此实例,指定是否删除子目录和文件。
public void Delete(bool recursive);
如果此 System.IO.DirectoryInfo 为空则将其删除。
public override void Delete();
返回当前目录中目录信息的可枚举集合。//获取当前目录下的所有子目录
public IEnumerable<DirectoryInfo> EnumerateDirectories();
返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。
public IEnumerable<DirectoryInfo> EnumerateDirectories(string searchPattern, SearchOption searchOption);
返回与指定的搜索模式匹配的目录信息的可枚举集合。
public IEnumerable<DirectoryInfo> EnumerateDirectories(string searchPattern);
返回与指定的搜索模式和搜索子目录选项匹配的文件信息的可枚举集合。//获取当前目录下的所有文件
public IEnumerable<FileInfo> EnumerateFiles(string searchPattern, SearchOption searchOption);
返回与搜索模式匹配的文件信息的可枚举集合。
public IEnumerable<FileInfo> EnumerateFiles(string searchPattern);
返回当前目录中的文件信息的可枚举集合。
public IEnumerable<FileInfo> EnumerateFiles();
返回与指定的搜索模式和搜索子目录选项匹配的文件系统信息的可枚举集合。
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption);
返回当前目录中的文件系统信息的可枚举集合。
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos();
返回与指定的搜索模式匹配的文件系统信息的可枚举集合。
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(string searchPattern);
获取一个 System.Security.AccessControl.DirectorySecurity 对象,该对象封装当前 System.IO.DirectoryInfo
对象所描述的目录的指定类型的访问控制列表 (ACL) 项。
public DirectorySecurity GetAccessControl(AccessControlSections includeSections);
获取一个 System.Security.AccessControl.DirectorySecurity 对象,该对象封装当前 System.IO.DirectoryInfo
对象所描述的目录的访问控制列表 (ACL) 项。
public DirectorySecurity GetAccessControl();
返回当前目录的子目录。
public DirectoryInfo[] GetDirectories();
返回当前 System.IO.DirectoryInfo 中目录的数组,该数组与给定的搜索条件匹配并使用某个值确定是否搜索子目录。
public DirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption);
返回当前 System.IO.DirectoryInfo 中与给定搜索条件匹配的目录的数组。
public DirectoryInfo[] GetDirectories(string searchPattern);
返回当前目录的文件列表。
public FileInfo[] GetFiles();
返回当前目录的文件列表,该列表与给定的搜索模式匹配并且使用某个值确定是否搜索子目录。
public FileInfo[] GetFiles(string searchPattern, SearchOption searchOption);
返回当前目录中与给定的搜索模式匹配的文件列表。
public FileInfo[] GetFiles(string searchPattern);
检索 System.IO.FileSystemInfo 对象的数组,该数组表示与指定的搜索条件匹配的文件和子目录。
public FileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption);
返回表示某个目录中所有文件和子目录的强类型 System.IO.FileSystemInfo 项的数组。
public FileSystemInfo[] GetFileSystemInfos();
检索强类型 System.IO.FileSystemInfo 对象的数组,该数组表示与指定的搜索条件匹配的文件和子目录。
public FileSystemInfo[] GetFileSystemInfos(string searchPattern);
将 System.IO.DirectoryInfo 实例及其内容移动到新路径。
public void MoveTo(string destDirName);
将 System.Security.AccessControl.DirectorySecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 System.IO.DirectoryInfo
对象所描述的目录。
public void SetAccessControl(DirectorySecurity directorySecurity);
四.部分Directory方法的代码和打印
public class LudwigDirectory {
string path = @"G:\111\11";
public void Delect() {
Directory.Delete(path);
}
public void CreateDirectory() {
Directory.CreateDirectory(path);
}
public void EnumerateDirectories() {
var dirs = Directory.EnumerateDirectories(path);
foreach(var dir in dirs) {
Console.WriteLine("获得当前所有子文件路径: " + dir);
}
}
public void EnumerateDirectories1() {//寻找所有名字带1的文件夹和子文件夹
var dirs = Directory.EnumerateDirectories(path, "*1", SearchOption.AllDirectories);
foreach(var dir in dirs) {
Console.WriteLine("获得当前所有名字带1的子文件夹EnumerateDirectories: " + dir);
}
}
public void GetDirectories() {
string[] directorys = Directory.GetDirectories(path, "*1", SearchOption.AllDirectories);
for(int i = 0; i < directorys.Length; i++) {
Console.WriteLine($"获取当前所有名字带1的子文件GetDirectories:{directorys[i]}");
}
}
public void EnumerateDirectories2() {//寻找所有名字带1的文件夹
var dirs = Directory.EnumerateDirectories(path, "*1", SearchOption.TopDirectoryOnly);
foreach(var dir in dirs) {
Console.WriteLine("获取当前路径下的所有名字带1的文件夹: " + dir);
}
}
public void EnumerateFiles() {
var files = Directory.EnumerateFiles(path);
foreach(var file in files) {
Console.WriteLine("获取当前文件夹中的所有文件EnumerateFiles: " + file);
}
}
public void GetFiles() {
var files = Directory.GetFiles(path);
foreach(var file in files) {
Console.WriteLine("获取当前文件夹中的所有文件GetFiles: " + file);
}
}
public void EnumerateFileSystemEntries() {
var all = Directory.EnumerateFileSystemEntries(path);
foreach(var i in all) {
Console.WriteLine("获取档期文件夹中的所有文件夹和文件EnumerateFileSystemEntries: " + i);
}
}
public void GetFileSystemEntries() {
var all = Directory.GetFileSystemEntries(path);
foreach(var i in all) {
Console.WriteLine("获取档期文件夹中的所有文件夹和文件GetFileSystemEntries: " + i);
}
}
public void GetCreationTime() {
DateTime time = Directory.GetCreationTime(path);
Console.WriteLine("获取当前文件夹的创建时间(北京时间): " + time);
DateTime time1 = Directory.GetCreationTimeUtc(path);//utc世界统一时间
Console.WriteLine("获取当前文件夹的创建时间(世界时间): " + time1);
}
public void GetCurrentDirectory() {
string path = Directory.GetCurrentDirectory();
Console.WriteLine("获取此时程序运行目录:" + path);
}
public void GetDirectoryRoot() {
string root = Directory.GetDirectoryRoot(path);
Console.WriteLine($"文件1的根目录为:{root}");
//没有就获得当前程序路径的根目录
string root1 = Directory.GetDirectoryRoot(@"/11/1");
Console.WriteLine($"文件1的根目录为1:{root1}");
}
public void GetLastAccessTime() {
DateTime time = Directory.GetLastAccessTime(path);
Console.WriteLine("获取上次修改文件夹的时间:" + time);
}
public void GetLastWriteTime() {
DateTime time = Directory.GetLastWriteTime(path);
Console.WriteLine("获取上次写入文件夹的时间:" + time);
}
public void GetLogicalDrives() {
var drives = Directory.GetLogicalDrives();
foreach(var d in drives) {
Console.WriteLine($"获取驱动器:{d}");
}
}
public void GetParent() {
var dir = Directory.GetParent(path);
Console.WriteLine($"获得父目录:{dir.FullName}");
}
public void Move() {
Directory.Move(@"G:\111\11", @"G:\111");
}