Lese og skrive til filer
Å lese data fra filer og skrive data til filer er kjernekonsepter i .NET.
Tailwind Traders må skrive summen av alle de individuelle butikksalgsfilene til en ny fil, og deretter laste filen inn i firmaets salgssystem.
Her lærer du hvordan du bruker File klassen til å lese og skrive til filer.
Lese data fra filer
Filer leses gjennom ReadAllText metoden på File klassen.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
Returobjektet fra ReadAllText er en streng.
{
"total": 22385.32
}
Analysere data i filer
Disse dataene i strengformatet gjør deg ikke så bra. Det er fortsatt bare tegn, men nå i et format som du kan lese. Du vil ha muligheten til å analysere disse dataene i et format som du kan bruke programmatisk.
Det finnes mange måter å analysere JSON-filer med .NET på, inkludert et fellesskapsbibliotek som kalles Json.NET.
Du kan legge til Json.NET pakken i prosjektet ved hjelp av NuGet:
dotnet add package Newtonsoft.Json
Deretter legger du til using Newtonsoft.Json øverst i klassefilen:
using Newtonsoft.Json;
Og bruk JsonConvert.DeserializeObject metode:
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; }
}
Tips
Filer kommer i en rekke formater. JSON-filer er de mest ønskelige å arbeide med på grunn av den innebygde støtten på språket. Du kan også støte på filer som er .csv, fast bredde eller et annet format. I så fall er det best å søke nuget.org etter en analyse for denne filtypen.
Skrive data til filer
Du lærte hvordan du skriver filer i forrige øvelse. Det er bare det at du skrev en tom en. Hvis du vil skrive data til en fil, bruker du samme WriteAllText metode, men sender inn dataene du vil skrive.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
Tilføye data til filer
I det foregående eksemplet overskrives filen hver gang du skriver til den. Noen ganger vil du ikke ha det. Du vil tilføye data til filen i stedet for å erstatte den helt. Du kan tilføye data med File.AppendAllText metoden. Som standard oppretter File.AppendAllText filen hvis den ikke allerede finnes.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
Tips
I det forrige kodeeksemplet ber Environment.NewLine .NET om å plassere verdien på sin egen linje. Hvis du ikke har passert denne verdien, vil du få alle tallene squished sammen på samme linje.
I neste øvelse skal du fullføre salgsprosjektet for Tailwind Traders ved å lese alle salgsfilene og skrive totalsummen til en .txt fil. Firmaets handelssystem kan deretter behandle filen.