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

内容纲要

.NET Path 类和 Directory.GetCurrentDirectory 是用于定义和编写文件系统路径的两种方法。

在上一练习中,你编写了一个程序,该程序循环访问文件夹以查找文件夹内或任何子文件夹内的任何“sales.json”文件。

本练习将使用 Path 类和 Directory.GetCurrentDirectory 来改进该程序,以便它找到扩展名为 .json 的所有文件。

使用当前目录并合并路径

在当前的 Program.cs 代码中,需要传递“store”文件夹的静态位置。 将此代码更改为使用 Directory.GetCurrentDirectory 值,而不是传递静态文件夹名称。

在编辑器中,在 Program.cs 文件的第一行上方插入以下代码。 此代码使用 Directory.GetCurrentDirectory 方法获取当前目录的路径,并将其存储在新变量 currentDirectory 中:

var currentDirectory = Directory.GetCurrentDirectory();

在刚添加的代码后插入以下代码。 此代码使用 Path.Combine 方法创建商店目录的完整路径,并将其存储在新变量 storesDirectory 中:

var storesDirectory = Path.Combine(currentDirectory, "stores");

将 FindFiles 函数中的 stores 变量替换为新变量 storesDirectory

var salesFiles = FindFiles(storesDirectory);

文件顶部现在应类似于以下代码片段:

var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");
var salesFiles = FindFiles(storesDirectory);

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

按 Ctrl+S(在 macOS 上则按 Cmd+S)保存 文件。

从命令行运行程序:

dotnet run

程序应显示以下输出:

/home/username/dotnet-files/stores/sales.json  
/home/username/dotnet-files/stores/201/sales.json  
/home/username/dotnet-files/stores/202/sales.json  
/home/username/dotnet-files/stores/203/sales.json  
/home/username/dotnet-files/stores/204/sales.json

请注意,返回的文件名包括完整的系统路径。 包括此路径的原因是 Directory.GetCurrentDirectory 方法返回当前位置的完整路径。

查找所有 .json 文件

此程序需要搜索扩展名为“.json”的任何文件,而不是只查找 sales.json 文件。 为此,请使用 Path.GetExtension 方法检查每个文件的扩展名。

在 foundFiles 中的 foreach 循环中,在 if 语句上方插入以下代码行以定义新变量 extension。 此代码使用 Path.GetExtension 方法获取每个文件的扩展名。

var extension = Path.GetExtension(file);

更改 if 语句,使其看起来像下面的代码行。 此语句检查文件的扩展名是否为 .json。

if (extension == ".json")

循环应如下所示:

foreach (var file in foundFiles)
{
    var extension = Path.GetExtension(file);
    if (extension == ".json")
    {
        salesFiles.Add(file);
    }
}

按 Ctrl+S / Cmd+S 保存文件。

从命令行运行程序:

dotnet run

现在,输出内容将显示每个存储 ID 目录中的所有 .json 文件:

/home/username/dotnet-files/stores/sales.json  
/home/username/dotnet-files/stores/201/sales.json
/home/username/dotnet-files/stores/201/salestotals.json  
/home/username/dotnet-files/stores/202/sales.json
/home/username/dotnet-files/stores/202/salestotals.json    
/home/username/dotnet-files/stores/203/sales.json  
/home/username/dotnet-files/stores/203/salestotals.json  
/home/username/dotnet-files/stores/204/sales.json  
/home/username/dotnet-files/stores/204/salestotals.json

太棒了! 你已使用 Path 类和 Directory.GetCurrentDirectory 方法让程序变得更可靠。 在下一单元中,你将了解如何创建目录和在不同位置之间移动文件。

遇到困难了?

如果在此练习中遇到任何问题,可参考下面的完整代码。 删除 Program.cs 中的所有内容,并将其替换为此解决方案:

var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");

var salesFiles = FindFiles(storesDirectory);
    
foreach (var file in salesFiles)
{
    Console.WriteLine(file);
}

IEnumerable<string> FindFiles(string folderName)
{
    List<string> salesFiles = new List<string>();

    var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);

    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}

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

使用 .NET 操作文件路径

2022-8-24 15:43:29

.NET

.NET 创建文件和目录

2022-8-24 16:35:31

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