大家好,欢迎来到IT知识分享网。
Directory静态类
该类位于System.IO命名空间下,因此需要引用:using System.IO;该类只有静态方法
需要注意的是:所有操作均会在磁盘具现真正的效果,因此调用方法操作时先对所操作的目录进行备份(建议设置单独要操作的目录如下)
主要静态方法的使用
1)创建一个目录, 如果文件夹已经存在,就什么都不干
//asd文件夹单独用于实验方法的文件夹 //在asd文件夹下创建名为 a 的目录 //如果d盘中没有asd目录 则先创建此目录 //然后在asd目录下创建 a 目录 Directory.CreateDirectory(@"d:\test\a");
2)删除指定路径下的空目录(有方法重载)
//删除空文件夹 Directory.Delete(@"d:\test"); //有可能报的异常 //1 指定路径下没有test目录 报异常 //2 指定路径下test不是空目录 报异常 //======方法重载================= //参数 true 删除asd目录及其所有的子目录 Directory.Delete(@"d:\test", true); //参数 false 如果asd中有子目录或子文件 //报异常:test 不是空目录 Directory.Delete(@"d:\test", false);
3)移动指定路径的目录到指定位置(还可以具有修改文件名的功能)
//相当于将 a 目录下的文件剪切 复制到 b 目录下 Directory.Move(@"d:\test\a\1.txt", @"d:\test\b\1.txt"); //将 1 修改为 2 Directory.Move(@"d:\test\b\1.txt", @"d:\test\b\2.txt");
4)判断指定目录是否存在,返回布尔类型
bool b1 = Directory.Exists(@"d:\test\f");//false bool b2 = Directory.Exists(@"d:\test\b");//true Console.WriteLine("b1 {0} \r\n b2 {1}",b1,b2);
5)获取目录下的所有直接子文件的路径,返回到字符串数组, 第二个参数是筛选出指定格式的直接子文件,如果不填第二个参数,则返回全部文件
直接子文件的路径:只包含当前目录下的子文件,不包含孙子,重孙这些后代目录中的文件
//获取指定目录下所有直接子文件的路径 string[] dirs = Directory.GetFiles(@"d:\test"); foreach (string item in dirs) { Console.WriteLine(item); } Console.WriteLine("==========================="); //获取指定目录下后缀名为txt文件的路径 //使用正则表达式方式,筛选后缀名为txt直接子文件的路径 //* 这里表示任意多个字符 dirs = Directory.GetFiles(@"d:\test","*.txt"); foreach (string item in dirs) { Console.WriteLine(item); }
第三个参数是枚举值:1)AllDirectories 获取所有文件路径 2)TopDirectoryOnly当前目录下
//获取test目录及其后代目录中所有的后缀名为 txt 的文件 string[] files2 = Directory.GetFiles(@"d:\test", "*.txt", SearchOption.AllDirectories); foreach (string item in files2) { Console.WriteLine(item); }
6)获取目录下所有文件夹的路径,返回字符串数组;第一,第三参数不再举例说明作用与上面差不多;以第二个参数举例说明
//获取指定目录下目录名称以a开头的目录 string[] dirs = Directory.GetDirectories(@"d:\test","a*"); //*a 目录名以a结尾的 *ab* 目录名带ab的 等等 foreach (string item in dirs) { Console.WriteLine(item); }
7)获取字段目录下直接子目录与文件
//获取字段目录下直接子目录与文件 string[] path = Directory.GetFileSystemEntries(@"d:test", "*", SearchOption.AllDirectories); foreach (string item in path) { Console.WriteLine(item); } Console.WriteLine("ok");
DirectoryInfo实例类
需要先创建对象的一个实例,通过实例点属性或者方法名
//实例化时必须填写路径 //路径必须小于248 个字符,文件名必须小于 260个字符 DirectoryInfo dirInfo = new DirectoryInfo(@"d:\test\d\2");
1)创建子目录 dirInfo.Create(); 在d:\test\d目录下创建名为2的目录(文件夹)
2)删除空的子目录(如果参数为true,删除本身及其子目录与文件) dirInfo.Delete();
3)获取指定文件的完整路径
string fullPath = dirInfo.FullName; Console.WriteLine(fullPath);//d:\test\c\2
4)获取扩展名(即使这个文件在磁盘上不存在)
dirInfo = new DirectoryInfo(@"d:\test\d\2.txt"); string extName = dirInfo.Extension; Console.WriteLine(extName);//.txt
5)获取指定目录下的直接子目录;获取指定目录下的直接子文件(重载方法与上面类似)
DirectoryInfo di = new DirectoryInfo(@"d:\test"); //获取指定目录下的直接子目录 DirectoryInfo[] dirs = di.GetDirectories(); foreach (DirectoryInfo item in dirs) { Console.WriteLine(item); } Console.WriteLine("========================"); //获取指定目录下的直接子文件 FileInfo[] files = di.GetFiles(); foreach (FileInfo item in files) { Console.WriteLine(item); }
其他实例的属性与方法自行测试
Directory与DirectoryInfo的区别:
Directory和DirectoryInfo两者都是可以进行常规的目录(或文件)操作如:复制、移动、重命名、创建和删除等功能;最重要的就是Directory中的功能比DirectoryInfo更多
1)Directory是静态类,可直接调用方法;DirectoryInfo是实例类,需要创建一个类的对象
2)Directory类中只有方法;DirectoryInfo既有方法又有属性
3)同名方法返回值有些许不同,Directory.GetFiles返回的是string []文件绝对路径;DirectoryInfo.GetFiles返回的是一个File []的对象集合
因此如果只是查询某个文件的位置,可以使用Directory.GetFiles()方法;但如果需要操作文件的话,建议使用DirectoryInfo.GetFiles()方法
说过窗体应用程序后可通过递归方法制作一个类似资源管理器的小程序
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/97424.html