一、定义
Directory类引用的命名空间是System.IO,它的定义是:
System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
用于通过目录和子目录进行创建、移动和枚举的静态方法,通俗点讲就是可以进行文件夹的创建、移动、删除等操作的一个类。
二、属性与方法及应用
1、创建目录(文件夹):CreateDirectory
声明如下:public static DirectoryInfo CreateDirectory(string path);
使用方法:
//如下通过该方法可以在D盘中新建一个myDirectoty文件夹
Directory.CreateDirectory(@"D:\myDirectoty");
2、移动目录:Directory.Move
声明如下:public static void Move(string sourceDirName,string destDirName);
//把目录D:\A移动到D:\B目录
File.Move(@"D:\A",@"D:\B");
3、删除:Delete
声明如下:
public static void Delete(string path,bool recursive);
参数一为删除目录路径,参数二作为是否删除非空目录的判断,true,则删除整个目录,false,则仅目录不为空方可删除。
4、设置目录属性:DirectoryInfo.Atttributes
目录属性可以设置只读、隐藏
DirectoryInfo DirInfo = new DirectoryInfo(@"D:\A");
DirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
5、获取当前目录下的所有文件:Directory.GetFiles
有三个方法:
(1)GetFiles(String) :返回指定目录中文件的名称(包括其路径)。
声明如下:public static string[] GetFiles (string path);
其中参数为:要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
(2)GetFiles(String, String):返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。使用该方法可以获取多种格式类型的文件
声明如下:public static string[] GetFiles (string path, string searchPattern);
其中参数一为:要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
参数二为:要与 path
中的文件名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
了解下通配符:
通配符说明符 | 匹配 |
* | 该位置中的零个或多个字符。 |
? | 该位置正好是一个字符 |
例:
①“*e”搜索 path 中所有以字母“e”结尾的名称
②“s*”搜索 path 中所有以字母“s”开头的名称
通配符的行为与其长度有一定的关系,扩展名恰好是三个字符时的 searchPattern 匹配行为与扩展名多于三个字符时不同
①恰好为三个字符的 searchPattern 返回扩展名为三个或三个以上字符的文件。
“*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。
②一个字符、两个字符或三个以上字符的 searchPattern 只返回扩展名恰好等于该长度的文件。
“*.a”只返回扩展名为 .a的文件。
“*.ab”只返回扩展名为 .ab的文件。
“*.abcd”只返回扩展名为 .abcd 的文件。
获取多个类型格式的文件:
//法一
var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".png") || s.EndsWith(".mp4"));
//法二
Directory.GetFiles()
Directory.GetFiles("c:\","(*.png|*.mp4)");
(3)GetFiles(String, String, SearchOption):返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径),使用某个值确定是否要搜索子目录。
其中
6、获取当前目录下的所有子目录:Directory.GetDirectories
声明如下:public static string[] GetDirectories(string path);
参数为目录路径,返回子目录数组
7、判断目录是否存在:Directory.Exist
声明如下:
public static bool Exists
(
string path;
);
返回bool值。
注意:在C#中 “\”是特殊字符,要表示它的话需要使用“\\”。由于这种写法不方便,C#语言提供了@对其简化。只要在字符串前加上@即可直接使用“\”。