前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 基础知识系列- 14 IO篇 文件的操作(2)

C# 基础知识系列- 14 IO篇 文件的操作(2)

原创
作者头像
程序员小高
修改2020-05-13 10:19:37
5880
修改2020-05-13 10:19:37
举报

c.返回目录下的所有文件

代码语言:txt
复制
public static string[] GetFiles (string path);

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

代码语言:txt
复制
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 方法可以直接返回目录下所有子目录以外,还有一组方法也可以枚举出当前目录下的子目录:

代码语言:txt
复制
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path);

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

代码语言:txt
复制
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern);

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

代码语言:txt
复制
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);

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

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

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

代码语言:txt
复制
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 作为查询的深度。

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

代码语言:txt
复制
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);

f.获取当前目录

代码语言:txt
复制
public static string GetCurrentDirectory ();

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

g.获取上级目录

代码语言:txt
复制
public static System.IO.DirectoryInfo GetParent (string path);

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

h.目录移动

代码语言:txt
复制
public static void Move (string sourceDirName, string destDirName);

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

i.删除目录

代码语言:txt
复制
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有哪些属性和方法吧。

代码语言:txt
复制
public DirectoryInfo (string path);

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

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

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

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

代码语言:txt
复制
public void Create ();

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

代码语言:txt
复制
public System.IO.DirectoryInfo CreateSubdirectory (string path);

创建 pathi指定的子目录。

代码语言:txt
复制
public override void Delete ();

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

代码语言:txt
复制
public void Delete (bool recursive);

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

代码语言:txt
复制
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 的同名方法一致。

代码语言:txt
复制
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories ();
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.SearchOption searchOption);

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

代码语言:txt
复制
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);

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

代码语言:txt
复制
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles ();
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern, System.IO.SearchOption searchOption);

返回文件的可枚举集合。

代码语言:txt
复制
public void MoveTo (string destDirName);

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.2.2 DirectoryInfo
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档