可使用 .NET 中的 File
和 Directory
类,以编程方式创建新文件和目录。
到目前为止,你已在 .NET 中创建了一个可靠的命令行应用程序,该应用程序可以读取任何文件夹结构来查找具有 .json 扩展名的文件。 需要读取这些文件以加总其中的数据。 然后,将总计写入新目录中名为“salesTotals”的新文件。
在此练习中,你将创建 salesTotalsDir 目录和 totals.txt 文件,其中显示相关的销售总额。
创建 SalesTotals 目录
在 Program.cs
文件中,删除循环访问的 foreach
循环,并将从 FindFiles
函数返回的每个文件名写入控制台输出。 这将导致不再使用变量 salesFiles
。 现在,暂时将其保留,因为在以后的课程中将再次使用它。
在 Program.cs
文件中,创建一个名为 salesTotalDir
的变量,该变量包含 salesTotalDir 目录的路径:
var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");
var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
var salesFiles = FindFiles(storesDirectory);
在 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 文件
在 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);
按 Ctrl+S / Cmd+S 保存文件。
通过从终端提示符运行以下代码来运行程序:
dotnet run
选择“文件”资源管理器中的“刷新”图标。

操作即将完成。 最后一步是读取销售文件,加总总额,将得到的总计写入新的“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;
}