在.NET 应用中使用文件系统

.NET 包含用于使用文件系统的内置类型,可在 System.IO 命名空间找到这些类型。

现在,你将了解 System.IO 中的类型,使用 C# 来读取文件系统,以查找文件和目录。

场景

大型零售商通常会将数据写入文件,以便以后可以批量处理。

Tailwind Traders 的每个商店都将销售总额写入一个文件中,并将该文件发送到一个中心位置。 若要使用这些文件,公司需要创建可以使用文件系统的批处理进程。

包含 System.IO 命名空间

System.IO 命名空间包含内置类型,可让你与文件和目录进行交互。 例如,可以 get 和 set 文件和目录的属性,并根据搜索条件检索文件和目录集合。 还可使用 System.IO 命名空间类型来对数据流和文件进行同步和异步读取和写入。

现在,我们将重点介绍借助 System.IO 命名空间包含的 Directory 类使用目录时需要了解的内容。 Directory 类公开用于创建、移动以及枚举目录和子目录的静态方法。

列出所有目录

使用 Directory 类时,经常执行的一项任务是列出或枚举目录。 例如,Tailwind Traders 有一个名为“stores”(门店)的根文件夹。 该文件夹中的子文件夹按商店编号组织,这些子文件夹中存有销售总额文件和库存文件。 此结构如以下示例所示:复制

📂 stores
    📄 sales.json
    📄 totals.txt
    📂 201
       📄 sales.json
       📄 salestotals.json
       📄 inventory.txt
    📂 202

若要阅读并列出顶级仔细阅读目录的名称,请使用 Directory.EnumerateDirectories 函数。

IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");

foreach (var dir in listOfDirectories) {
    Console.WriteLine(dir);
}

// Outputs:
// stores/201
// stores/202

列出特定目录中的文件

若要列出目录中所有文件的名称,可以使用 Directory.EnumerateFiles 函数。

IEnumerable<string> files = Directory.EnumerateFiles("stores");

foreach (var file in files)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/sales.json

列出目录和所有子目录中的所有内容

Directory.EnumerateDirectories 和 Directory.EnumerateFiles 函数都具有一个重载,该重载接受用于指定搜索模式文件和目录必须匹配的参数。

它们还具有另一个重载,该重载接受用于指示是否以递归方式遍历指定的文件夹及其所有子文件夹的参数。

// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);

foreach (var file in allFilesInAllFolders)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/201/inventory.txt

在下一练习中,你将使用 Directory 类动态通读 Tailwind Traders 主“stores”目录,以查找所有 sales.json 文件。

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

第10章 Web Pages 进阶

2022-8-23 19:02:56

.NET

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

2022-8-24 15:34:52

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