c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)
前接上一篇内容。
如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼《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)相关推荐
- c# 找出目录下的所有子目录_C#遍历文件夹,其实只需要一句话!
在项目中大家肯定偶尔会有遍历文件夹的需求,还在老老实实写递归么?!那怕是骚一点的linq递归,其实都太麻烦了,微软爸爸早就想到我们有这样的需求,直接在框架内部已经实现好了. 遍历文件夹其实只需要一个函 ...
- c# 找出目录下的所有子目录_第9期:Linux下文件系统满的处理
文件系统满(file system full),几乎是每个程序员都会遇到的问题.它会导致各种神奇的现象,比如程序突然无法启动.日志突然不刷新了等.测试环境,我们通常找出大文件并删除即可.常规的步骤是: ...
- c# 找出目录下的所有子目录_Linux技巧:ls命令只列出子目录名和每行打印一个文件名
本篇文章介绍 Linux ls 命令如何只列出指定目录下的子目录名,和每行只打印一个文件名的方法. 只列出指定目录下的子目录名 在 ls 命令中只列出子目录名 在 Linux 中,ls 命令默认会列出 ...
- c# 找出目录下的所有子目录_Linux操作系统文件目录
/bin bin是Binary的缩写.这个目录存放着最经常使用的命令. /boot这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件. /dev dev是Device(设备) ...
- linux /sys目录下的各个子目录说明
ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等 sysfs是一种基于ram文件系统,和proc一样. Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统 ...
- 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。
package FileDemo;import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; impo ...
- java 找出姓“张”的学生,将他们的信息写入第二个文件
一.需求 编写一个Java源程序,其中包含: 编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是: (1)从键盘上输入两个文件的路径名及其文件名. (2)从 ...
- 计算机专业科普知识图文并茂,科普下计算机专业需要什么基础知识?
近日有关于科普下计算机专业需要什么基础知识?的问题受到了很多网友们的关注,大多数网友都想要知道科普下计算机专业需要什么基础知识?的具体情况,那么关于到科普下计算机专业需要什么基础知识?的相关信息,小编 ...
- linux-查找某目录下包含关键字内容的文件
grep -r "{关键字}" {路径} 例如: grep -r "test" /data/reports grep -R --include=" ...
最新文章
- 【git】几大区概念
- 【网络基础】Mime Type
- 无法安装驱动程序此计算机上不存在,11.2.4 “安装程序没有找到安装在此计算机上的硬盘驱动器”问题 (1)...
- CustomValidator的使用方法
- Request_获取请求参数通用方式介绍
- 采蘑菇的克拉莉丝(树链剖分)
- 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
- matlab 一元线性微分,怎样用matlab求一元线性函数极值
- 项目规划管理 - 5
- pip3 install mysqlclient 报错 “/bin/sh: 1: mysql_config: not found”的解决方法
- 社区计算机基础知识,社区计算机基础知识试题及答案.doc
- ArcGIS利用DEM提取河流水系(附练习数据下载)
- 如何快速实现人脸识别通道?一文了解具体技巧
- 控制台模拟鼠标、键盘操作
- 2023秋招--游卡--游戏客户端--二面面经
- 【数据库】--- Redis
- 什么是驻点和拐点_拐点和驻点的区别
- PhpSpreadsheet常用操作
- 如何下载IEEE论文
- 使用mclust进行聚类分析
热门文章
- Spring LDAP 2.0.0发布
- 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
- Spring –持久层–编写实体并配置Hibernate
- 令人印象深刻的第一个Apache Camel版本
- 休眠提示:排序和排序
- 前端校验表单项内容是否合规的JS脚本代码
- jar/war/ear文件的区别
- Java声明定义抽象类_接口_继承_实现
- tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒
- Objective-C学习中对 C语言的扩展