Odczytywanie z plików i zapisywanie do plików
Odczytywanie danych z plików i zapisywanie danych do plików to podstawowe koncepcje platformy .NET.
Firma Tailwind Traders musi zapisać sumę wszystkich plików sprzedaży poszczególnych sklepów w nowym pliku, a następnie załadować plik do systemu sprzedaży firmy.
Tutaj dowiesz się, jak używać klasy do odczytywania i zapisywania File
w plikach.
Odczytywanie danych z plików
Pliki są odczytywane przy użyciu metody ReadAllText
klasy File
.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
Obiekt zwracany z metody ReadAllText
jest ciągiem.
{
"total": 22385.32
}
Analizowanie danych w plikach
Te dane w formacie ciągu nie bardzo Ci się przydadzą. To nadal tylko znaki, ale teraz w formacie, który możesz przeczytać. Potrzebujesz możliwości przeanalizowania tych danych do formatu, którego można użyć programowo.
Istnieje wiele sposobów analizowania plików JSON za pomocą platformy .NET, na przykład biblioteka społeczności o nazwie Json.NET.
Pakiet Json.NET można dodać do projektu przy użyciu narzędzia NuGet:
dotnet add package Newtonsoft.Json
Następnie dodaj using Newtonsoft.Json
do góry pliku klasy:
using Newtonsoft.Json;
I użyj JsonConvert.DeserializeObject
metody :
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; }
}
Napiwek
Pliki mają różnorodne formaty. Plik JSON jest najbardziej pożądany ze względu na wbudowaną obsługę w języku. Możesz również napotkać pliki w formacie CSV, pliki o stałej szerokości lub w innym formacie. W takim przypadku najlepiej poszukać w witrynie nuget.org analizatora dla tego typu pliku.
Zapisywanie danych do plików
Wiesz już, jak zapisywać pliki w poprzednim ćwiczeniu; to tylko, że napisałeś pusty. Aby zapisać dane do pliku, użyj tej samej metody WriteAllText
, ale przekaż dane, które chcesz zapisać.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
Dołączanie danych do plików
W poprzednim przykładzie plik jest zastępowany za każdym razem, gdy zapisujesz do niego dane. Czasami tego nie chcesz. Chcesz dołączyć dane do pliku zamiast całkowicie go zastąpić. Dane można dołączać za pomocą metody File.AppendAllText
. Domyślnie program tworzy plik, File.AppendAllText
jeśli jeszcze nie istnieje.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
Napiwek
W poprzednim przykładzie kodu monituje platformę .NET o Environment.NewLine
umieszczenie wartości we własnym wierszu. Jeśli nie przekażesz tej wartości, wszystkie liczby będą znajdować się razem w jednym wierszu.
W następnym ćwiczeniu ukończysz projekt łącznej sumy sprzedaży dla firmy Tailwind Traders, odczytując wszystkie pliki sprzedaży i zapisując sumę całkowitą do pliku txt. System handlowy firmy może następnie przetworzyć plik.