讀取及寫入檔案
從檔案讀取資料並將資料寫入檔案是 .NET 中的核心概念。
Tailwind Traders 必須將所有個別商店銷售檔案的總計寫入新檔案,然後將檔案載入公司的銷售系統。
在這裡,您將了解如何使用 File
類別來讀取及寫入檔案。
從檔案讀取資料
您可透過 File
類別上的 ReadAllText
方法來讀取檔案。
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
從 ReadAllText
傳回的物件是一個字串。
{
"total": 22385.32
}
剖析檔案中的資料
這個字串格式的資料沒有太大助益。 其仍然只是字元,但現在是您可以讀取的格式。 您希望能夠將此資料剖析為能以程式設計方式使用的格式。
有許多方法可使用 .NET 來剖析 JSON 檔案,包括稱為 Json.NET 社群程式庫。
您可使用 NuGet 將 Json.NET 套件新增至專案:
dotnet add package Newtonsoft.Json
然後,將 using Newtonsoft.Json
新增至類別檔案的頂端:
using Newtonsoft.Json;
使用 JsonConvert.DeserializeObject
方法:
var salesJson = File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
var salesData = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
Console.WriteLine(salesData.Total);
class SalesTotal
{
public double Total { get; set; }
}
提示
檔案有各種不同的格式。 JSON 檔案因其內建的語言支援,所以最適合使用。 您也可能會遇到 .csv、固定寬度或其他格式的檔案。 在那些情況下,最好搜尋 nuget.org 以取得該檔案類型的剖析器。
將資料寫入檔案
您已了解如何在上一個練習中撰寫檔案; 只是您撰寫的是空白的。 若要將資料寫入檔案,請使用相同的 WriteAllText
方法,但傳入所要寫入的資料。
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
將資料附加到檔案
在上述範例中,每次寫入檔案時,都會覆寫檔案。 有時候您不想這麼做。 您想要將資料附加至檔案,而不是將其完全取代。 您可以使用 File.AppendAllText
方法來附加資料。 根據預設,如果檔案尚未存在,則 File.AppendAllText
將會建立檔案。
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
提示
在上述程式碼範例中,Environment.NewLine
會提示 .NET 將值單獨放在一行。 若未傳遞此值,則所有數字會全都擠在一行。
在下一個練習中,您將透過讀取所有銷售檔案,以及將總計寫入 .txt 檔案,以完成 Tailwind Traders 的銷售總額專案。 公司的商務系統接著就可以處理該檔案。