練習 - 建立檔案和目錄

已完成

.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. 選取 [檔案] 總管中的重新整理圖示。

    Screenshot of the Refresh icon in the Files explorer of the Cloud Shell editor.

您只剩下最後一步。 最後一個步驟是讀取銷售檔案、加總總額,然後將總計寫入新的 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;
}