练习 - 创建文件和目录
可使用 .NET 中的 File
和 Directory
类,以编程方式创建新文件和目录。
到目前为止,你已在 .NET 中创建了一个可靠的命令行应用程序,该应用程序可以读取任何文件夹结构来查找具有 .json 扩展名的文件。 现在,你需要读取这些文件,汇总其中的数据,然后将总额写入名为“salesTotals”的新目录中的新文件。
在本练习中,请创建 salesTotalDir 目录和用于整理销售总额的 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;
}