本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性。

上文提到,在《C# 基础知识系列-IO篇》之文件相关的内容完结之后,会带领大家开发一个小工具-快速检索文件所在目录。



1.3. Path

Path的中文名称有路径的意思,所以Path类就是路径类,C#把Path设置为工具类,路径的实例被区分为文件和目录了。以下是它的定义:

public static class Path

路径是描述文件和目录的位置的字符串,路径并不一定指向硬盘上,换句话说就是路径不一定是物理路径也有可能是虚拟路径或者网络路径。在不同的操作系统和平台上,路径有着不同的表现,所以Path类是对不同平台行为的统一抽象。具体的路径表示需要参照具体的系统表示形式。

那么我们先来看看Path为我们提供了哪些内容,让我们一睹为快:

1.3.1 字段

public static readonly char AltDirectorySeparatorChar; public static readonly char DirectorySeparatorChar;

这两个是特定系统下的目录分隔符,其中AltDirectorySeparatorChar表示正斜线(/),DirectorySeparatorChar 表示反斜线(\)。为什么说是特定系统下的目录分隔符呢,因为Windows环境对两种分隔符都支持,但是Unix和类Unix系统只支持 / 作为目录分隔符。所以如果系统需要跨平台支持,则最好使用 AltDirectorySeparatorChar作为目录分隔符来使用。

public static readonly char PathSeparator;

这个字段返回在环境变量中分隔路径字符串的平台特定的分隔符。Windows中返回一个分号(;),其他平台可能会有不一样的表现。

public static readonly char VolumeSeparatorChar;

这个表示卷分隔符,是个很有意思的特定。对于Linux系统来说并没有类似于Windows一样的卷,所以该字段会返回一个/ ,而Windows中例如:

D:\Temp\ 这个目录则会返回冒号(:)。

1.3.2 方法

介绍完了字段,我们来看看Path给我们提供了哪些方法吧。

先从最常用的说起吧:

public static string Combine (params string[] paths); public static string Combine (string path1, string path2); public static string Combine (string path1, string path2, string path3); public static string Combine (string path1, string path2, string path3, string path4);

这一组方法用来拼接路径,除第一个参数外,每个参数都应当是相对于之前参数拼接结果路径的相对路径。如果后续出现了绝对路径,那之前计算出的路径信息则会全部抛弃,重新计算。

以下是一个示例:

string[] paths = {@"d:\archives", "2001", "media", "images"}; string fullPath = Pa(paths); Con(fullPath); paths = new string[] {@"d:\archives\", @"2001\", "media", "images"}; fullPath = Pa(paths); Con(fullPath); paths = new string[] {"d:/archives/", "2001/", "media", "images"}; fullPath = Pa(paths); Con(fullPath); // Windows系统下的执行结果 // d:\archives\2001\media\images // d:\archives\2001\media\images // d:/archives/2001/media\images // // 类Unix系统的执行结果 // d:\archives/2001/media/images // d:\archives\/2001\/media/images // d:/archives/2001/media/images

继续下一个方法:

public static string GetFullPath (string path, string basePath); public static string GetFullPath (string path);

获取相对路径的绝对路径,其中 path 是相对路径,basePath是绝对路径。如果指定basePath,则从basePath根据path计算全路径。

public static string GetRelativePath (string relativeTo, string path);

返回从一个路径到另一个路径的相对路径,其中relativeTo是源路径,path为目标路径。其中relativeTo始终是目录,或者被认为是目录。

public static string GetDirectoryName (string path);

返回路径path里的目录信息,例如:"C:\Directory\SubDirectory\; ,返回"C:\Directory\SubDirectory",如果path是目录,则返回其上级目录的路径字符串。

public static string Join (string path1, string path2, string path3, string path4); public static string Join (string path1, string path2, string path3); public static string Join (params string[] paths);

与Combine方法差不多,不过Join方法是把所以参数均按照相对目录来拼接。

说完了目录的一些操作,我们看看Path对文件路径提供了哪些支持:

public static string GetFileName (string path);

获取路径里的文件名,例如说:“C:\mydir\my”,返回结果就是“my”,也就是说这个方法会返回携带后缀名的文件名。因为文件名本身就包含后缀名。

public static string GetFileNameWithoutExtension (string path);

返回不带后缀名的文件名,与GetFileName类似,但是不好含文件格式后缀。

public static bool HasExtension (string path);

确定是否包含后缀名,也称格式名或者扩展名。

public static string GetExtension (string path);

返回所代表的文件的后缀名。

public static string ChangeExtension (string path, string extension);

修改文件的后缀名。

这些是Path的常用方法,大家有个印象就好。



1.3 FileSystemInfo

文件系统信息,这是FileInfo和DirectoryInfo的两个类的基类,它定义了文件系统中文件和目录共有的一些属性和方法。接下来让我们简单看一看。

先来看一下类的声明:

public abstract class FileSystemInfo : MarshalByRefObject, Sy

一个abstract类,这个标记意味着这个类是一个抽象类,抽象类不能直接实例化,所以我们可能不会自己去直接实例化一个FileSystemInfo了。

所以我们先略过FileSystemInfo的构造函数,直接看属性和方法。

public Sy Attributes { get; set; }

获取或者设置当前文件或目录的特性,这个特性是一个枚举,而且是一个位标记的枚举类型。



通过以下方式进行判断:

FileSystemInfo fsi; bool isXXX = & FileA) == FileA; public DateTime CreationTime { get; set; } public DateTime CreationTimeUtc { get; set; }

返回文件/目录的创建时间,其中UTC指协调世界时 。

public string Extension { get; }

获取文件的文件后缀名(扩展名),带点号(.)。

public virtual string FullName { get; } public abstract string Name { get; }

都是返回文件或目录的名称,不过FullName返回的是全路径名称,Name只返回了文件名。

public DateTime LastAccessTime { get; set; } public DateTime LastAccessTimeUtc { get; set; }

获取或设置文件最后一次访问的时间,该属性的返回值并不是严格意义上的最后一次访问时间,因为部分系统不会及时更新。

public DateTime LastWriteTime { get; set; } public DateTime LastWriteTimeUtc { get; set; }

最后一次修改时间,可以自己设置或修改,类似与LastAccessTime,可能不是正确的值。

2. 总结

到目前为止,常用的文件API已经介绍完毕。接下来将为大家演示各种流的使用,以及各种流的操作场景。

更多内容烦请关注我的博客《高先生小屋》

1.《(c如何以文件路径)如何显示文件完整路径?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《(c如何以文件路径)如何显示文件完整路径?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3221322.html