Läsa och skriva till filer
Att läsa data från filer och skriva data till filer är grundläggande koncept i .NET.
Tailwind Traders måste skriva summan av alla enskilda butiksförsäljningsfiler till en ny fil och sedan läsa in filen i företagets försäljningssystem.
Här lär du dig hur du använder File
klassen för att läsa och skriva till filer.
Läsa data från filer
Du läser filer med hjälp av metoden ReadAllText
i klassen File
.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
Objektet som returneras från ReadAllText
är en sträng.
{
"total": 22385.32
}
Parsa data i filer
Det räcker inte att bara få data i ett strängformat. Det är fortfarande bara en massa tecken men är nu i ett format som du kan läsa. Du vill kunna parsa dessa data till ett format som du kan använda programmatiskt.
Det finns många sätt att parsa JSON-filer med .NET, bland annat ett communitybibliotek som heter Json.NET.
Du kan lägga till Json.NET-paketet i projektet med hjälp av NuGet:
dotnet add package Newtonsoft.Json
Lägg sedan till using Newtonsoft.Json
överst i klassfilen:
using Newtonsoft.Json;
Och använd JsonConvert.DeserializeObject
metoden:
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; }
}
Dricks
Filer kan ha olika format. Det är bäst att använda JSON-filer eftersom det finns inbyggt stöd för JSON i språket. Du kan även stöta på .csv-filer, filer med fast bredd eller filer i något annat format. I så fall rekommenderar vi att du söker på nuget.org efter en parser för den filtypen.
Skriva data till filer
Du lärde dig att skriva filer i föregående övning. Det är bara det att du skrev en tom. När du skriver data till en fil använder du också WriteAllText
-metoden, men då skickar du in de data som du vill skriva.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
Lägga till data till filer
I föregående exempel skrivs filen över varje gång du skriver till den. Ibland vill du inte ha det. Du vill lägga till data i filen i stället för att ersätta dem helt. Du kan lägga till data med metoden File.AppendAllText
. Som standard File.AppendAllText
skapar filen om den inte redan finns.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
Dricks
I föregående kodexempel Environment.NewLine
uppmanas .NET att placera värdet på sin egen rad. Om du inte skickar in det här värdet får du alla tal direkt efter varandra på samma rad.
I nästa övning slutför du projektet med total försäljning för Tailwind Traders genom att läsa alla försäljningsfiler och skriva totalsumman till en .txt-fil. Företagets handelssystem kan sedan bearbeta filen.