directoryinfo(Directory)

directoryinfo(Directory)

Directory静态类

该类位于System.IO命名空间下,因此需要引用:using System.IO;该类只有静态方法

需要注意的是:所有操作均会在磁盘具现真正的效果,因此调用方法操作时先对所操作的目录进行备份(建议设置单独要操作的目录如下)

directoryinfo(Directory)

单独设置进行操作的test目录(文件夹)中的目录与文件

主要静态方法的使用

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);
 }
directoryinfo(Directory)

获取指定目录下直接子文件的路径

第三个参数是枚举值:1)AllDirectories 获取所有文件路径 2)TopDirectoryOnly当前目录下

//获取test目录及其后代目录中所有的后缀名为 txt 的文件 
string[] files2 = Directory.GetFiles(@"d:\test", "*.txt", SearchOption.AllDirectories);
 foreach (string item in files2)
 {
     Console.WriteLine(item);
 }
directoryinfo(Directory)

获取test目录下所有文件

6)获取目录下所有文件夹的路径,返回字符串数组;第一,第三参数不再举例说明作用与上面差不多;以第二个参数举例说明

//获取指定目录下目录名称以a开头的目录
string[] dirs = Directory.GetDirectories(@"d:\test","a*");
//*a 目录名以a结尾的  *ab* 目录名带ab的 等等
foreach (string item in dirs)
{
    Console.WriteLine(item);
}
directoryinfo(Directory)

获取a开头的目录

7)获取字段目录下直接子目录与文件

//获取字段目录下直接子目录与文件
string[] path = Directory.GetFileSystemEntries(@"d:test", "*", SearchOption.AllDirectories);
foreach (string item in path)
{
    Console.WriteLine(item);
}
Console.WriteLine("ok");
directoryinfo(Directory)

获取指定目录下所有目录与文件

DirectoryInfo实例类

需要先创建对象的一个实例,通过实例点属性或者方法名

//实例化时必须填写路径

   
directoryinfo(Directory)
//路径必须小于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);
}
directoryinfo(Directory)

获取直接子目录与文件

其他实例的属性与方法自行测试

Directory与DirectoryInfo的区别:

Directory和DirectoryInfo两者都是可以进行常规的目录(或文件)操作如:复制、移动、重命名、创建和删除等功能;最重要的就是Directory中的功能比DirectoryInfo更多

1)Directory是静态类,可直接调用方法;DirectoryInfo是实例类,需要创建一个类的对象

2)Directory类中只有方法;DirectoryInfo既有方法又有属性

3)同名方法返回值有些许不同,Directory.GetFiles返回的是string []文件绝对路径;DirectoryInfo.GetFiles返回的是一个File []的对象集合

因此如果只是查询某个文件的位置,可以使用Directory.GetFiles()方法;但如果需要操作文件的话,建议使用DirectoryInfo.GetFiles()方法

说过窗体应用程序后可通过递归方法制作一个类似资源管理器的小程序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/25398.html

(0)
上一篇 2023-10-16 12:30
下一篇 2023-10-16

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注