練習 - 建立檔案和目錄
.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;
}