Čtení souborů a zápis do souborů
Čtení dat ze souborů a zápis dat do souborů představují základní koncepty .NET.
Společnost Tailwind Traders potřebuje napsat celkový součet všech souborů prodeje jednotlivých obchodů do nového souboru a pak soubor načíst 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 úplně 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.