练习 - 创建文件和目录

已完成

可使用 .NET 中的 FileDirectory 类,以编程方式创建新文件和目录。

到目前为止,你已在 .NET 中创建了一个可靠的命令行应用程序,该应用程序可以读取任何文件夹结构来查找具有 .json 扩展名的文件。 现在,你需要读取这些文件,汇总其中的数据,然后将总额写入名为“salesTotals”的新目录中的新文件。

在本练习中,请创建 salesTotalDir 目录和用于整理销售总额的 totals.txt 文件。

创建 SalesTotals 目录

  1. Program.cs 文件中,删除循环访问的 foreach 循环,并将从 FindFiles 函数返回的每个文件名写入控制台输出。 此更改导致不再使用变量 salesFiles。 但现在,我们会暂时将它保留在这里,因为我们会在以后的课程中再次使用它。

  2. Program.cs 文件中,创建一个名为 salesTotalDir 的变量,该变量包含 salesTotalDir 目录的路径

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    
    var salesFiles = FindFiles(storesDirectory);
    
  3. Program.cs 文件中,添加代码以创建目录:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);   // Add this line of code
    
    var salesFiles = FindFiles(storesDirectory);   
    

写入 totals.txt 文件

  1. Program.cs 文件中,添加代码以在新创建的 salesTotalDir 目录中创建名为 totals.txt 的空文件。 现在使用空字符串作为该文件的内容:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);
    
    var salesFiles = FindFiles(storesDirectory);
    
    File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);
    
  2. Ctrl+S / Cmd+S 保存文件。

  3. 通过从终端提示符运行以下代码来运行程序:

    dotnet run
    
  4. 选择“文件”资源管理器中的“刷新”图标。

    屏幕截图显示 Cloud Shell 编辑器的“文件”资源管理器中的“刷新”图标。

操作即将完成。 最后一步是读取销售文件,加总总额,将得到的总计写入新的“totals.txt”文件。 接下来,你将学习如何读取和分析文件中的数据。

遇到困难了?

如果在此练习中遇到问题,可参考以下到目前为止的完整代码:

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

var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
Directory.CreateDirectory(salesTotalDir);     
var salesFiles = FindFiles(storesDirectory);

File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);

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;
}