前接上一篇内容。

如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼《C# 基础知识系列- 14 IO篇 文件的操作(1)》。本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类。下一篇介绍如何通过流来操作文件。

1.2 Directory和DirectoryInfo

1.2.1 Directory

d. 返回目录下的所有子目录:

public static string[] GetDirectories (string path);public static string[] GetDirectories (string path, string searchPattern);public static string[] GetDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static string[] GetDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);

除了上文提到的 GetDirectories 方法可以直接返回目录下所有子目录以外,还有一组方法也可以枚举出当前目录下的子目录:

public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path);

枚举 path 目录下的所有子目录。

public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern);

searchPattern,搜索名称字符串,可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。

public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);

这两个方法放在一起讲,这两个是对上一个方法的增强和补充。其中 EnumerationOptions 是类,可以配置查询的条件;SearchOption 是个枚举,选择只查询当前目录的子目录名称还是继续深入查询子孙目录。

e.查看目录下的所有文件-补充

与子目录查询相同,Directory也支持这么几组查询方法:

public static string[] GetFiles (string path);public static string[] GetFiles (string path, string searchPattern);public static string[] GetFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static string[] GetFiles (string path, string searchPattern, System.IO.SearchOption searchOption);

从参数上看,可以看出来这是返回子目录下的文件列表。其中使用 searchPattern查询名称,enumerationOptions 作为查询条件,searchOption 作为查询的深度。

同样,查询文件也可以使用枚举方法:

public static System.Collections.Generic.IEnumerable EnumerateFiles (string path);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);

f.获取当前目录

public static string GetCurrentDirectory ();

在程序中调用这个方法可以获取程序执行时的目录,如果是在调试阶段,目录是指程序的主方法所在目录;如果在发布之后,也就是运行阶段,该目录指程序所在目录。

g.获取上级目录

public static System.IO.DirectoryInfo GetParent (string path);

获取传入目录的上级目录信息。

h.目录移动

public static void Move (string sourceDirName, string destDirName);

sourceDirName 移动到 destDirName,其中destDirName所代表的目录不能存在。这个方法有个很有意思的特点,它也支持移动文件。也就是说,如果sourceDirNanme指向的是一个文件,那么destDirName也必须是一个文件类型的路径字符串。

i.删除目录

public static void Delete (string path);//删除 path所代表的目录,如果目录非空则提示无法删除public static void Delete (string path, bool recursive);// recursive指示是否同时删除子目录和文件

以上是Directory类的一些常用方法,当然还有更多的内容留待小伙伴一起发掘。传送门==>https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory?view=netcore-3.1

1.2.2 DirectoryInfo

之前的篇幅我们介绍了Directory的工具类所支持的方法,接下来我们看一下 DirectoryInfo有哪些属性和方法吧。

public DirectoryInfo (string path);

初始化的方式很简单,直接传递一个目录的路径字符串,就可以获取一个目录信息类了。

接下来看看,DirectoryInfo支持的属性:

public override bool Exists { get; }// 目录是否存在public override string Name { get; }// 目录名称,不是路径public System.IO.DirectoryInfo Parent { get; }//如果有上级目录,则返回上级目录,如果没有则返回 nullpublic System.IO.DirectoryInfo Root { get; }//获取目录的根目录

我们路过了DirectoryInfo的属性,看到了它一部分特点,那么我们该怎么使用呢?

public void Create ();

创建目录信息所代表的目录,如果目录已存在,则不会有任何变化 。如果这个目录的父目录也不存在,则自动创建父目录

public System.IO.DirectoryInfo CreateSubdirectory (string path);

创建 pathi指定的子目录。

public override void Delete ();

如果当前目录是空目录,调用可直接删除,如果非空则会提示错误。

public void Delete (bool recursive);

根据参数 recursive指定是否删除当前目录的子目录。

public System.IO.DirectoryInfo[] GetDirectories ();public System.IO.DirectoryInfo[] GetDirectories (string searchPattern);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.SearchOption searchOption);

获取子目录的数组,参数与 Directory 的同名方法一致。

public System.Collections.Generic.IEnumerable EnumerateDirectories ();public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern);public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern, System.IO.SearchOption searchOption);

返回一个子目录信息的可枚举集合。

public System.IO.FileInfo[] GetFiles ();public System.IO.FileInfo[] GetFiles (string searchPattern);public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);

嗯,依旧类似的写法,获取文件信息的数组

public System.Collections.Generic.IEnumerable EnumerateFiles ();public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern);public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern, System.IO.SearchOption searchOption);

返回文件的可枚举集合。

public void MoveTo (string destDirName);

把当前目录移动到对应的目录。

依旧未完待续,下一篇将为大家介绍一下 Path类和FileInfo与DirectoryInfo的父类 FileSystemInfo 这两个类的API,然后演示一下如何使用流来读写文件。在文件和目录这块内容里,我故意忽略了权限的介绍,这部分我将会放在进阶篇中介绍。

API的介绍总是这么枯燥乏味,不过请期待一下,在IO篇完成后,我会演示一下如何做一个简单的文件查找工具。

简单介绍一下这个工具的内容:它会遍历系统里所有文件的路径信息,然后记录到一个缓存文件中,用户输入一个要查询的文件名时,我们可以通过读取缓存文件确认文件所在目录。

c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)相关推荐

  1. c# 找出目录下的所有子目录_C#遍历文件夹,其实只需要一句话!

    在项目中大家肯定偶尔会有遍历文件夹的需求,还在老老实实写递归么?!那怕是骚一点的linq递归,其实都太麻烦了,微软爸爸早就想到我们有这样的需求,直接在框架内部已经实现好了. 遍历文件夹其实只需要一个函 ...

  2. c# 找出目录下的所有子目录_第9期:Linux下文件系统满的处理

    文件系统满(file system full),几乎是每个程序员都会遇到的问题.它会导致各种神奇的现象,比如程序突然无法启动.日志突然不刷新了等.测试环境,我们通常找出大文件并删除即可.常规的步骤是: ...

  3. c# 找出目录下的所有子目录_Linux技巧:ls命令只列出子目录名和每行打印一个文件名

    本篇文章介绍 Linux ls 命令如何只列出指定目录下的子目录名,和每行只打印一个文件名的方法. 只列出指定目录下的子目录名 在 ls 命令中只列出子目录名 在 Linux 中,ls 命令默认会列出 ...

  4. c# 找出目录下的所有子目录_Linux操作系统文件目录

    /bin bin是Binary的缩写.这个目录存放着最经常使用的命令. /boot这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件. /dev dev是Device(设备) ...

  5. linux /sys目录下的各个子目录说明

    ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等 sysfs是一种基于ram文件系统,和proc一样. Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统 ...

  6. 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。

    package FileDemo;import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; impo ...

  7. java 找出姓“张”的学生,将他们的信息写入第二个文件

    一.需求 编写一个Java源程序,其中包含: 编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是: (1)从键盘上输入两个文件的路径名及其文件名. (2)从 ...

  8. 计算机专业科普知识图文并茂,科普下计算机专业需要什么基础知识?

    近日有关于科普下计算机专业需要什么基础知识?的问题受到了很多网友们的关注,大多数网友都想要知道科普下计算机专业需要什么基础知识?的具体情况,那么关于到科普下计算机专业需要什么基础知识?的相关信息,小编 ...

  9. linux-查找某目录下包含关键字内容的文件

    grep -r "{关键字}"  {路径} 例如: grep -r "test"  /data/reports grep -R --include=" ...

最新文章

  1. 【git】几大区概念
  2. 【网络基础】Mime Type
  3. 无法安装驱动程序此计算机上不存在,11.2.4 “安装程序没有找到安装在此计算机上的硬盘驱动器”问题 (1)...
  4. CustomValidator的使用方法
  5. Request_获取请求参数通用方式介绍
  6. 采蘑菇的克拉莉丝(树链剖分)
  7. 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
  8. matlab 一元线性微分,怎样用matlab求一元线性函数极值
  9. 项目规划管理 - 5
  10. pip3 install mysqlclient 报错 “/bin/sh: 1: mysql_config: not found”的解决方法
  11. 社区计算机基础知识,社区计算机基础知识试题及答案.doc
  12. ArcGIS利用DEM提取河流水系(附练习数据下载)
  13. 如何快速实现人脸识别通道?一文了解具体技巧
  14. 控制台模拟鼠标、键盘操作
  15. 2023秋招--游卡--游戏客户端--二面面经
  16. 【数据库】--- Redis
  17. 什么是驻点和拐点_拐点和驻点的区别
  18. PhpSpreadsheet常用操作
  19. 如何下载IEEE论文
  20. 使用mclust进行聚类分析

热门文章

  1. Spring LDAP 2.0.0发布
  2. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
  3. Spring –持久层–编写实体并配置Hibernate
  4. 令人印象深刻的第一个Apache Camel版本
  5. 休眠提示:排序和排序
  6. 前端校验表单项内容是否合规的JS脚本代码
  7. jar/war/ear文件的区别
  8. Java声明定义抽象类_接口_继承_实现
  9. tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒
  10. Objective-C学习中对 C语言的扩展