Čtení souborů a zápis do souborů

Dokončeno

Čtení dat ze souborů a zápis dat do souborů představují základní koncepty .NET.

Firma Tailwind Traders potřebuje zapsat součet souborů tržeb ze všech svých prodejen do nového souboru. Potom soubor načtěte do prodejního systému společnosti.

Tady se dozvíte, jak pomocí File třídy číst a zapisovat do souborů.

Čtení dat ze souborů

Ke čtení souborů slouží metoda ReadAllText ve třídě File.

File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");

Objektem, který metoda ReadAllText vrací, je řetězec.

{
  "total": 22385.32
}

Parsovat data v souborech

Tato data v řetězcovém formátu vám toho moc nepřinášejí. Jsou to jen znaky, ale teď ve formátu, který dokážete přečíst. Potřebujete schopnost „parsovat“ tato data do formátu, který můžete použít programově.

Existuje mnoho způsobů, jak v .NET parsovat soubory JSON, včetně komunitní knihovny známé jako Json.NET.

Balíček Json.NET můžete do projektu přidat pomocí NuGetu:

dotnet add package Newtonsoft.Json

Pak přidejte using Newtonsoft.Json do horní části souboru předmětu:

using Newtonsoft.Json; 

A použijte metodu 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; }
}

Tip

Soubory mají nejrůznější formáty. Vzhledem k integrované podpoře v tomto jazyku je nejvhodnější pracovat se soubory JSON. Můžete také narazit na soubory .csv, s pevnou šířkou nebo v jiném formátu. V takovém případě je nejlepší vyhledat na webu nuget.org parser pro soubory tohoto typu.

Zápis dat do souborů

Naučili jste se psát soubory v předchozím cvičení; Je to jen to, že jste napsali prázdný. Pokud chcete do souboru zapsat data, použijete stejnou metodu WriteAllText, ale předáte data, která se mají zapsat.

var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());

// totals.txt
// 22385.32

Připojení dat do souborů

V předchozím příkladu se soubor přepíše pokaždé, když do něho něco zapíšete. Někdy to nechcete. Chcete k souboru připojit data místo toho, abyste je zcela nahradili. Data můžete připojit pomocí metody File.AppendAllText. Ve výchozím nastavení vytvoří soubor, File.AppendAllText pokud ještě neexistuje.

var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");

// totals.txt
// 22385.32
// 22385.32

Tip

V předchozím příkladu kódu vyzve .NET k Environment.NewLine vložení hodnoty na vlastní řádek. Pokud byste tuto hodnotu nepředali, byla by všechna čísla natěsnaná na jednom řádku.

V dalším cvičení dokončíte projekt pro Tailwind Traders tím, že přečtete všechny soubory tržeb a zapíšete celkový součet do souboru txt, který lze zpracovat v obchodním systému firmy.