使用 .NET 操作文件路径

内容纲要

.NET 具有处理文件系统路径的内置机制。

在上一练习中,我们没有多少文件夹需要分析。 如果文件系统包含许多文件和文件夹,则手动生成路径可能很繁琐。 好在 .NET 提供了一些内置常量和实用工具函数,可简化文件路径的处理。

下面,你将了解 System.IO 命名空间和 System.Environment 类型中的一些常量和实用工具函数,以便使程序更智能且具有更强的复原能力。

确定当前目录

有时,你不知道程序应在哪个目录或路径中运行。 假设你希望程序使用当前目录,但不清楚路径。

.NET 通过 Directory.GetCurrentDirectory 方法公开当前目录的完整路径。

Console.WriteLine(Directory.GetCurrentDirectory());

如果从下列结构的“201”文件夹中运行上述代码,则 Directory.GetCurrentDirectory() 将返回 stores\201

📂 stores
    📂 201

使用特殊目录

.NET 可在任何位置运行:可在 Windows、macOS、Linux 上运行,甚至可在 iOS 和 Android 等移动操作系统上运行。 每个操作系统都可能有也可能没有特殊系统文件夹的概念,如专用于用户特定文件的主目录、桌面目录或用于存储临时文件的目录。

这些类型的特殊目录因操作系统而异。 因此尝试记住每个操作系统的目录结构并基于当前 OS 执行切换操作会非常麻烦。

System.Environment.SpecialFolder 枚举指定用于检索特殊系统文件夹路径的常量。

以下代码将返回返回操作系统的路径,该路径等效于 Windows\My Documents 文件夹路径或用户的主目录路径(如果此代码在 Linux 上运行)。

string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

使用路径

路径是频繁出现的一个主题,.NET 包含一个称为 Path 的类,专用于处理路径。

Path 类位于 .NET 的 System.IO 命名空间中,无需安装。

特殊路径字符

不同的操作系统使用不同的字符来分隔目录级别。

例如,Windows 使用反斜杠 (stores\201),而 macOS 使用正斜杠 (stores/201)。

Path 类包含 DirectorySeparatorChar 字段,可帮助你使用正确的字符。

当你需要手动生成路径时,.NET 会自动将该字段解释为适用于操作系统的分隔符。

Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");

// returns:
// stores\201 on Windows
//
// stores/201 on macOS

联接路径

Path 类使用文件和文件夹路径的概念,这些路径就是一些字符串。 可使用 Path 类自动生成正确的特定操作系统路径。

例如,如果想要获取“stores/201”文件夹的路径,可以使用 Path.Combine 函数来执行此操作。

Console.WriteLine(Path.Combine("stores","201")); // outputs: stores/201

请记住,可使用 Path.Combine 或 Path.DirectorySeparatorChar 类而不是硬编码字符串,因为程序可能在多种不同的操作系统上运行。 无论在什么操作系统上运行,Path 类始终能够正确设置路径的格式。

提示

Path 类并不关心内容是否确实存在。 路径是概念性的,而不是物理实体,且类可以为你生成和分析字符串。

确定文件扩展名

Path 类还可指示文件的扩展名。 如果你有一个文件,并且想要确定它是不是 JSON 文件,则可使用 Path.GetExtension 函数。

Console.WriteLine(Path.GetExtension("sales.json")); // outputs: .json

获取需要了解的有关文件或路径的所有信息

Path 类包含许多不同的方法,这些方法可执行各种操作。 可以分别使用 DirectoryInfo 或 FileInfo 类获取关于目录或文件的最完整信息。

string fileName = $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales{Path.DirectorySeparatorChar}sales.json";

FileInfo info = new FileInfo(fileName);

Console.WriteLine($"Full Name: {info.FullName}{Environment.NewLine}Directory: {info.Directory}{Environment.NewLine}Extension: {info.Extension}{Environment.NewLine}Create Date: {info.CreationTime}"); // And many more

PathDirectoryInfo 和 FileInfo 类上有许多有用的属性和实用工具方法,但这些是最常使用的核心概念。 在下一练习中,你将编写路径和标识 .json 文件。

给TA打赏
共{{data.count}}人
人已打赏
.NET

.NET 应用中的文件和目录练习 - 使用文件系统

2022-8-24 15:34:52

.NET

.NET 应用中的文件和目录 练习 - 使用路径

2022-8-24 16:05:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索