• 【原创】C# 文件操作详解(四)DirectoryInfo类


      前面有几位前辈给我之前的几篇文章提出了宝贵意见,建议我自己做例子来说,因此,这篇我就以自己的小测试来说明DirectoryInfo的使用方法。但是,中间还是会有部分文档的内容,请各位前辈见谅。下面就先来看下如何使用DirectoryInfo类来操作我们的目录。

      1、创建目录

     // 摘要:创建目录。
    public void Create();
    //摘要:使用 System.Security.AccessControl.DirectorySecurity 对象创建目录。
    public void Create(DirectorySecurity directorySecurity);
    

      微软为我们提供了两个创建目录的方法(当然这里我指的是纯创建方法,不包括移动、复制等操作带来的目录创建),下面我使用第一个方法进行了测试。

     if (Directory.Exists(@"E:\DirectoryInfoDemo"))
    {
        Console.WriteLine("目录已经存在!");
    }
    else
    {
        DirectoryInfo directoryInfo = new DirectoryInfo(@"E:\DirectoryInfoDemo");
        directoryInfo.Create();
    }
    
    Console.ReadKey();

      结果如图:

      执行前:                                                       执行后:

                         

      你也可以使用Create方法进行级联创建。  

      2、删除目录

    // 摘要:如果此 System.IO.DirectoryInfo 为空,则删除它。
    public override void Delete();
    // 摘要:删除 System.IO.DirectoryInfo 的此实例,指定是否要删除子目录和文件。
    public void Delete(bool recursive);
    

      删除目录的功能微软仍然给我们提供了两个方法,第一个很简单理解,第二个多了一个参数recursive,从英文的字面意思我们也知道,这个Delete方法是同时删除目录下的子目录和文件。下面我们用程序来实现以下,

    if (!Directory.Exists(@"E:\DirectoryInfoDemo"))
    { Console.WriteLine("目录不存在!"); } else { DirectoryInfo directoryInfo = new DirectoryInfo(@"E:\DirectoryInfoDemo"); directoryInfo.Delete(true); } Console.ReadKey();

    结果如图:

      执行前:                                                       执行后:

                     

      如果我们是多级目录的话,那就需要使用递归的方法来进行删除了,不然你就会得到这个的提示

      

      3、获取子目录和文件

      对于这个操作,微软为我们提供了众多方法,你可以根据自己的需要来进行选择,

    // 摘要:返回当前目录中的目录信息的可枚举集合。
    // 摘要:返回与指定的搜索模式匹配的目录信息的可枚举集合。
    public IEnumerable<DirectoryInfo> EnumerateDirectories(string searchPattern);
    // 摘要:返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。
    public IEnumerable<DirectoryInfo> EnumerateDirectories(string searchPattern, SearchOption searchOption);
    // 摘要:返回当前目录中的文件信息的可枚举集合。
    public IEnumerable<FileInfo> EnumerateFiles();
    // 摘要:返回与搜索模式匹配的文件信息的可枚举集合。
    public IEnumerable<FileInfo> EnumerateFiles(string searchPattern);
    // 摘要:返回与指定的搜索模式和搜索子目录选项匹配的文件信息的可枚举集合。
    public IEnumerable<FileInfo> EnumerateFiles(string searchPattern, SearchOption searchOption);
    // 摘要: 返回当前目录中的文件系统信息的可枚举集合。
    public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos();
    // 摘要:返回与指定的搜索模式匹配的文件系统信息的可枚举集合。
    public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(string searchPattern);
    // 摘要: 返回与指定的搜索模式和搜索子目录选项匹配的文件系统信息的可枚举集合。
    public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption);
    // 摘要:获取 System.Security.AccessControl.DirectorySecurity 对象,该对象封装当前 System.IO.DirectoryInfo
    public DirectorySecurity GetAccessControl();
    // 摘要:获取 System.Security.AccessControl.DirectorySecurity 对象,该对象封装当前 System.IO.DirectoryInfo对象所描述的目录的指定类型的访问控制列表 (ACL) 项。
    public DirectorySecurity GetAccessControl(AccessControlSections includeSections);
    // 摘要:返回当前目录的子目录。
    public DirectoryInfo[] GetDirectories();
    // 摘要:返回当前 System.IO.DirectoryInfo 中、与给定搜索条件匹配的目录的数组。
    public DirectoryInfo[] GetDirectories(string searchPattern);
    // 摘要:返回当前 System.IO.DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。
    public DirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption);
    // 摘要:返回当前目录的文件列表。
    public FileInfo[] GetFiles();
    // 摘要:返回当前目录中与给定的搜索模式匹配的文件列表。
    public FileInfo[] GetFiles(string searchPattern);
    // 摘要:返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。
    public FileInfo[] GetFiles(string searchPattern, SearchOption searchOption);
    // 摘要:返回表示某个目录中所有文件和子目录的强类型 System.IO.FileSystemInfo 项的数组。
    public FileSystemInfo[] GetFileSystemInfos();
    // 摘要:检索表示与指定的搜索条件匹配的文件和子目录的强类型System.IO.FileSystemInfo 对象的数组。
    与搜索条件匹配的强类型 FileSystemInfo 对象的数组。
    public FileSystemInfo[] GetFileSystemInfos(string searchPattern);
    // 摘要:检索表示与指定的搜索条件匹配的文件和子目录的 System.IO.FileSystemInfo 对象的数组。
    public FileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption);
    

      这么多方法我就不一一举例了,只挑选其中一两个来测试一下,如果大家有需要,就对其他方法进行测试吧。

    if (!Directory.Exists(@"E:\DirectoryInfoDemo"))
    {
        Console.WriteLine("目录不存在!");
    }
    else
    {
        DirectoryInfo directoryInfo = new DirectoryInfo(@"E:\DirectoryInfoDemo");
        var directroies = directoryInfo.GetDirectories();
         foreach (var directroy in directroies)
        {
            Console.WriteLine(directroy.Name);
        }
    }
    
    Console.ReadKey();    
    

    结果如图:

      执行前:                                                       执行后:

              

      除去以上的操作,微软还给我们提供了移动操作、查看和设置目录的访问权限,本文就不举例说明了。

      

     

      

    ------------------------------------------------------------------------

    联系我:277241073@qq.com

      

      

        

    本文出自 “1Q84mi” 博客,请务必保留出处
  • 相关阅读:
    ViewGroup全面分析
    onInterceptTouchEvent和onTouchEvent调用时序 .
    基数树与RCU锁
    dwarf格式解析
    算法一(动态规划)
    IO调度器(二) IO的中断返回
    IO调度器
    借个例子说明sed的模式空间,以及针对模式空间的N,P,D用法
    f2fs中node page的lock_page
    python学习之用正则处理log(持续更新,ftace)
  • 原文地址:https://www.cnblogs.com/1Q84mi/p/2868822.html
Copyright © 2020-2023  润新知